即使取消分配,也不会返回nil

Emi*_*mil 1 iphone delegates objective-c release-management

我在这里碰到了一个真正的困难.

我的课程是自我创建的(一个+ (void) start;方法),它被委派给一个代表.我需要通过委托选择器向委托发送一些消息.为了检查代表是否已被释放,我已经尝试过if (delegate == nil/NULL),但即使它确实已经发布,它仍然说它不是.

我该如何解决这个问题?(代表被分配到id)

这就是我的应用程序的构建方式:

AppDelegate
> NavController
>> TableView 
>>> Post 
>>>> GetData 
Run Code Online (Sandbox Code Playgroud)

GetData是自创的类.Post是GetData的委托,由TableView/NavController发布.发布Post后,它也被设置为零.
换句话说,GetData不会释放它的委托!

ken*_*ytm 5

取消分配指针的内容不会自动将指针设置为NULL.你需要明确地做,例如

[delegate release];
delegate = nil;
Run Code Online (Sandbox Code Playgroud)