将属性添加到iPhone应用程序中的所有视图控制器

时间:2012-09-14 06:29:43

标签: iphone objective-c uiviewcontroller

在我的iPhone应用中查看控制器,可以从UIViewControllerUITableViewController延伸。我需要为所有这些属性添加一个属性,以便我可以在控制器之间传递用户信息。我所知道的解决方案是添加BaseViewControllerBaseTableViewController,将属性添加到它们中,然后让所有控制器继承它们。

重复BaseViewControllerBaseTableViewController中的属性似乎不是我最优雅的解决方案。还有更好的吗?

谢谢!

1 个答案:

答案 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);
}

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html