在我的应用中,我做过类似的事情,
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; //some code appDelegate = nil;
但是,App运行良好,不会发出警告或崩溃。
有人可以解释一下吗? 感谢。
答案 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做任何事情,自动创建的那个..