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