为什么要向UINavigationController添加委托会使我的应用程序崩溃?

时间:2012-06-13 14:06:12

标签: iphone delegates storyboard

我正在研究iPhone应用程序。我正在使用Storyboard。

我希望将一个对象附加到NavController,以处理显示表视图的窗口底部的按钮栏的可见性。

我创建了自己的UINavigationDelegate; MyNavigationControllerDelegate。

我在UIBuilder中创建了一个NSObject,并更改了它的类MyNavigationControllerDelegate。然后将其作为UINavigationController的委托附加。

enter image description here

出于某种原因,MyNavigationControllerDelegate正在被取消分配。我本以为作为委托就足以保留对它的引用并防止重新分配,但似乎并非如此。

有关如何防止其被解除分配的任何建议?每次加载视图时,我是否必须将其重置为委托?

1 个答案:

答案 0 :(得分:2)

UINavigationController的delegate属性声明为assign,而不是retainstrong(请参阅here)。代理通常声明为weakassign,这意味着分配属性不会导致UINavigationController增加代理的引用计数,并且您需要另一个对象来保存强引用它(可能是你的RootViewController)。