0

我的 iPhone 应用程序中的视图控制器要么扩展自UIViewController要么UITableViewController。我需要为它们添加一个属性,以便我可以在控制器之间传递用户信息。我知道的解决方案是添加 aBaseViewController和 a BaseTableViewController,将属性添加到它们,然后让所有控制器从它们继承。

BaseViewController对我来说,重复这个属性BaseTableViewController似乎不是最优雅的解决方案。有没有更好的?

谢谢!

4

1 回答 1

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

于 2012-09-14T07:49:20.543 回答