定义实例变量和@property

时间:2011-10-21 20:25:08

标签: objective-c

以下定义变量的方法有什么区别?

@interface MyClass: NSObject
{
    NSString *string;
}

@property (nonatomic, strong) NSString *string;

VS

@interface MyClass: NSObject

@property (nonatomic, strong) NSString *string;

我知道@property负责setter和getter(与@synthesize一起使用),我知道两种方式都可以正常工作。 我也知道后一种方法不适用于NSArray,NSDictionary。但它适用于与IB相关的IBOutlets。

它与alloc / init有什么关系吗?或者有一个我完全不知道的概念?

感谢。

1 个答案:

答案 0 :(得分:2)

编译器会自动为您创建NSString *string; ivar。最新的SDK没有区别。

我从未遇到过NSDictionary没有明确的ivar支持的问题。

更新

以下是有关已声明属性的文档。

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html