在一个静态单例类中保持对主UIViewController的引用



我有一个静态单例类,我用它来访问主UIViewController(这是由appdelegate创建的),并通过它所有的子UIViewController。

我是这样声明它的

@interface mySingleton : NSObject
{
    ViewController* m_viewController;
}
@property (nonatomic,assign) ViewController* m_viewController
在。m文件中,我得到这个错误:
@synthesize m_viewController; // ERROR: Existing ivar "m_viewController" for unsafe_unretained property "m_viewController" must be __unsafe_unretained.

我解决这个问题的方法是在声明中加入__unsafe_unretained,就像错误所说的那样。是否有任何问题,我保持__unsafe_unretained属性在m_viewController?它代表了应用程序的主菜单,永远不应该被释放。所以它是一个悬空指针不应该成为问题因为它稍后会被AppDelegate释放?

如果你不希望m_viewController被释放,为什么不使用strong代替assign呢?

此外,因为它通常是应用程序委托分配主视图控制器,因为应用程序委托可以通过UIApplication的单例访问,为什么不保留对主视图控制器的引用,而不是创建一个单独的类来做?

最新更新