我在这里碰到了一个真正的困难。
我的课程是自我创建的(一个+ (void) start;
- 方法),它被发送给一个代表。
我需要通过委托选择器向委托发送一些消息。为了检查委托是否已被释放,我已经尝试if (delegate == nil/NULL)
,但即使它真的被释放,它仍然说它不是。
我该如何解决此问题? (委托被分配到id
)
这就是我的应用程序的构建方式:
AppDelegate
> NavController
>> TableView
>>> Post
>>>> GetData
GetData是自创的类。 Post是GetData的委托,由TableView / NavController发布。发布Post后,它也设置为nil 换句话说, GetData不会释放它的代理!
答案 0 :(得分:5)
取消分配指针的内容不会自动将指针设置为NULL。你需要明确地这样做,例如。
[delegate release];
delegate = nil;
答案 1 :(得分:3)
您无法检查对象是否已被释放。另一个对象可能会出现并占用相同的内存空间,与原始对象无法区分。
具有委托的类的用户负责在释放委托对象时将委托设置为nil
。对象本身无法检测到它。