二传手和吸啰手作为objc_setAssociatedObjec



我不明白这种风格是什么意思,对标准设置者/getter有什么好处吗?

- (UIViewController*)myVC {
return objc_getAssociatedObject(self, kMJPopupViewController);
}
- (void)setMyVC:(UIViewController *) myVC {
objc_setAssociatedObject(self, kMyVC, myVC, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

您只能在主@interface和类扩展(没有名称的类别)中使用成员变量 - 它们支持"标准"属性的getter和setter。使用关联的对象在类的类别中特别有用,因为它允许您假装该类无论如何都有一个支持变量。

另请参阅libextobjc,它有一个synthesizeAssociation()宏,这使得在类别中添加@properties变得几乎微不足道。

最新更新