我一直认为不能在类别中声明对象属性.直到我的合作伙伴在我们的应用程序代码中完成它,它似乎工作.
我继续SO和谷歌狂热试图向他解释不,Objective-C类别只能用于添加方法,而不是属性.我发现了诸如以下问题:
但后来我在Apple的网站上发现了这个链接,其中包含有关@property声明的以下内容:
属性声明以关键字@property开头.@property可以出现在类的@interface中找到的方法声明列表中的任何位置.@property 也可以出现在协议或类别的声明中.(重点补充)
我知道这不起作用:
@interface MyClass ()
NSInteger foobar;
- (void) someCategorizedMethod;
@end
Run Code Online (Sandbox Code Playgroud)
但这编译:
@interface MyClass ()
@property NSInteger foobar;
- (void) someCategorizedMethod;
@end
Run Code Online (Sandbox Code Playgroud)
我的问题是(a)这里的最佳做法是什么?(b)这是Objective-C 2.0的新功能,而不是使用"真正的"iVar,它只是在幕后使用关联存储来实现这个功能吗?
我经常觉得需要将Objective-C代码拆分成多个文件以提高可读性.我想避免上课并打电话给他们.我想简单导入(比如在php中).
如果有人可以请参考一个有效的例子.