假设下面的所有代码都写在一个实现文件中,.Could有人解释了它们之间的区别:
#1
@interface ViewController ()
@property (nonatomic) NSDictionary *currentAlbumData;
@end
@implementation ViewController
#2
@interface ViewController () {
NSDictionary *currentAlbumData;
}
@end
@implementation ViewController
#3
@interface ViewController
@end
@implementation ViewController {
NSDictionary *currentAlbumData;
}
- some methods here -
@end在我看来,第一个在类扩展中声明了一个属性变量。第二个在类扩展中声明一个实例变量。第三个声明了一个不是类extension...what的实例变量,这意味着什么?与简单地在类扩展中声明ivar相比如何?
发布于 2016-01-14 00:12:32
属性和实例变量之间的区别应该是显而易见的。
在扩展中定义ivar与在实现中定义ivar的区别在于可见性。虽然像你的帖子中包含的私有扩展通常与实现编写在同一个文件中,但它们并不是必须的。接口可以在任何地方定义,编译器/链接器可见的所有扩展在构建时被合并到一个类定义中。
https://stackoverflow.com/questions/34770061
复制相似问题