好的,我不是新手,Objective-C
但我遇到了一个奇怪的错误,这是我以前从未见过的。也许我只是犯了一个小错误,你可以看到它。
在我的一个函数中,我首先通过以下方式从自定义视图类创建一个新对象:
[buttonsBackground removeFromSuperview];
self.buttonsBackground = [[[PostCommentButtonsBackground alloc] initWithFrame:self.contentView.bounds] autorelease];
buttonsBackground.delegate = self;
但是如果我用调试器跳过这个块,调试器声称这buttonsBackground
将是一个零指针。但是在NSLog
之后添加一个权利
NSLog(@"%@",self.buttonsBackground);
仍然打印该行
<PostCommentButtonsBackground: 0x7bd27a0; frame = (0 0; 320 82); layer = <CALayer: 0x6e688b0>>
这显然意味着它不能为零。有谁知道这怎么可能?
我使用的是 LLDB 调试器,而不是 GDB。该属性buttonsBackground
被声明为
@property(nonatomic, retain)PostCommentButtonsBackground *buttonsBackground;
所以丢失的保留也不是这样。
编辑:好的,我刚刚看到,我不是唯一一个遇到完全相同问题的人。还有另一个人有同样的问题Debugger lldb 说我的对象是 nil 什么时候不是?
无论如何,我只是将这篇文章保持打开状态,因为在其他帖子中人们一直声称,开发人员在内存管理方面做得不好。在我的帖子中,您实际上可以看到,事实并非如此。