gpt4 book ai didi

初始化后的Objective-C对象nil

转载 作者:行者123 更新时间:2023-12-04 05:55:52 24 4
gpt4 key购买 nike

好的,我对 Objective-C 并不陌生但是我遇到了一个奇怪的错误,这是我以前从未见过的。也许我只是犯了一个小错误,你能看到。

在我的一个函数中,我首先通过以下方式从自定义 View 类创建一个新对象:

[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。属性(property) buttonsBackground被声明为
@property(nonatomic, retain)PostCommentButtonsBackground *buttonsBackground;

所以丢失的保留也不是这种情况。

编辑:好吧,我刚刚看到,我不是唯一一个遇到完全相同问题的人。还有一个人也有同样的问题 Debugger lldb says my object is nil when is not ?

无论如何,我只是让这个帖子保持开放状态,因为在另一个帖子中人们一直声称,开发人员在内存管理方面做得很差。在我的帖子中,您实际上可以看到,情况并非如此。

最佳答案

带有新 Xcode 4.3 的 LLDB 有时会完全丢失,并且使用 NSLog 而不是 LLDB 将显示您的初始化对象已正确初始化,而不是 nil .

所以,当你面对一个错误时,这真的很痛苦。

关于初始化后的Objective-C对象nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com