Ios 我应该使用具有关联对象的协议或类别来为我的子视图控制器提供属性吗?

Ios 我应该使用具有关联对象的协议或类别来为我的子视图控制器提供属性吗?,ios,uiviewcontroller,Ios,Uiviewcontroller,我正在构建一个自定义视图控制器容器,并正在确定使用哪个容器为我的孩子提供视图控制器属性,类似于UINavigationController获取视图控制器的title属性以及左、右栏按钮项。每种方法的优缺点是什么?注意,我已经看到了category方法的使用,例如在teexcellentviewdeck Controller()和一系列其他组件中 编辑 viewDeck和其他控制器将关联对象与类别结合使用来实现这一点。我建议不要使用类别:在向XCode项目添加使用类别的库/框架时,存在许多XCod

我正在构建一个自定义视图控制器容器,并正在确定使用哪个容器为我的孩子提供视图控制器属性,类似于UINavigationController获取视图控制器的title属性以及左、右栏按钮项。每种方法的优缺点是什么?注意,我已经看到了category方法的使用,例如在teexcellentviewdeck Controller()和一系列其他组件中

编辑
viewDeck和其他控制器将关联对象与类别结合使用来实现这一点。

我建议不要使用类别:在向XCode项目添加使用类别的库/框架时,存在许多XCode/LLVM编译器问题(请参阅)。在我看来,协议对于这类事情非常有效。

我不确定我是否会使用它们。我想我应该创建一个具有属性的基本视图控制器类,然后让您的所有子视图控制器继承自该类。类别可以包含方法,但不能包含存储,因此没有ivar或属性(具有支持ivar)

您确定ViewDeck正在为此使用类别吗?也许它是一个类扩展?你到底在哪里看到的?对不起,它使用关联对象来实际设置它。签出此代码并搜索关联对象关联对象不是属性。IMHO使用它们是一个强烈的信号,表明是时候做适当的子类化了。对不起,请看我对上面ikini viking的评论