以下定义变量的方法有什么区别?
@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有什么关系吗?或者有一个我完全不知道的概念?
感谢。
答案 0 :(得分:2)
编译器会自动为您创建NSString *string;
ivar。最新的SDK没有区别。
我从未遇到过NSDictionary没有明确的ivar支持的问题。
更新
以下是有关已声明属性的文档。