将AppDelegate Shared实例设置为nil不会产生警告或崩溃

时间:2013-06-17 12:57:35

标签: ios uiapplicationdelegate

在我的应用中,我做过类似的事情,

 AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
 //some code
 appDelegate = nil;

但是,App运行良好,不会发出警告或崩溃。

有人可以解释一下吗? 感谢。

4 个答案:

答案 0 :(得分:2)

首先,您appDelegate指向[[UIApplication sharedApplication] delegate]。然后你指出它无处可去。但是[[UIApplication sharedApplication] delegate]仍然是一样的。你没有做任何事。你甚至没碰它。

你可能想到的是:

 [[UIApplication sharedApplication] setDelegate:nil];

但它也不应该产生警告或崩溃。它应该只导致不调用app delegate方法,因为发送给nil的消息什么也不做。

答案 1 :(得分:1)

 AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

使用此行,它会返回appDelegate的共享实例。

[UIApplication sharedApplication] ---允许访问单身人士

delegate方法返回指向app delegate的指针。 并在完成所有工作后将nil分配给appDelegate。为什么会崩溃? 如果您在分配nil值后尝试调用方法,则可能。那不行。

答案 2 :(得分:0)

您正在将appDelegate指针设置为nil而不是应用的代表。编写此代码后,[[UIApplication sharedApplication] delegate]仍然不是nil

答案 3 :(得分:0)

[[UIApplication sharedApplication] delegate]将为您提供指向您的应用委托的指针,该代表是您在制作项目时自动创建的。因此设置appDelegate = nil,只需将指向app delegate的指针设置为nil即可。不对app delegate做任何事情,自动创建的那个..