在我的iPhone应用中查看控制器,可以从UIViewController
或UITableViewController
延伸。我需要为所有这些属性添加一个属性,以便我可以在控制器之间传递用户信息。我所知道的解决方案是添加BaseViewController
和BaseTableViewController
,将属性添加到它们中,然后让所有控制器继承它们。
重复BaseViewController
和BaseTableViewController
中的属性似乎不是我最优雅的解决方案。还有更好的吗?
谢谢!
答案 0 :(得分:0)
由于扩展在您的情况下不起作用,您可以在UIViewController上编写一个类别,并使用objc_getAssociatedObject
存储您想要的数据并使用objc_getAssociatedObject
检索它。但是你应该小心使用这个选项。
static NSString *key = @"example";
- (void)setExampleProperty:(id)value {
objc_setAssociatedObject(self, (__bridge void *)key, value, OBJC_ASSOCIATION_RETAIN);
}
- (id)exampleProperty {
return objc_getAssociatedObject(self, (__bridge void *)key);
}