我的其中一个课程MyClass
非常大,我想将其分为几个类别MyClass(A)
,MyClass(B)
,....我的问题是MyClass+A
的某些方法使用了类扩展@property
中定义的MyClass()
。
我可以从类别中访问它吗?如果是的话:怎么做?
如果不是,还有其他方法可以继续吗?
答案 0 :(得分:4)
我可以从类别中访问它吗?如果是,那该怎么办?
是。之一:
选项1是更好的解决方案。
答案 1 :(得分:1)
您可以在私有标头中声明属性,也可以按照建议重新定义它。此外,以下方法有时也适用:
使用ObjectiveC运行时:id objc_msgSend(id self,SEL op,...)。使用原始类型或结构时应小心。
使用键值编码:[someObject setValue:aValue forKey:@" propertyName"];
使用performSelector:[someObject performSelector:@selector(setFoobar)。 。 。 ],请注意,这将在ARC
使用NSInvocation
键值编码非常常见。其他更适用于库和框架,但如果需要,你当然可以使用它们。