gpt4 book ai didi

cocoa - UIView绘制矩形;类变量超出范围

转载 作者:行者123 更新时间:2023-12-03 17:26:49 30 4
gpt4 key购买 nike

根据新信息,我的上一个问题的简短而甜蜜的版本。

我有一个带有 init 和 drawrect 方法的 UIVIew(还有另一个线程和一堆其他东西,但我会保持简短和甜蜜)。

我在 -(id)init 方法中分配和初始化的所有类变量都超出了 drawRect 方法中的范围/nil/0x0,我无法访问它们。

例如;

在界面中:

NSObject* fred;

实现中:

-(id)init
{
if(self == [super init])
{
fred = [[NSObject alloc] init];
}

return self;
}

-(void)drawRect:(CGRect)rect
{
NSLog(@"Fred is retained %i times",[fred retainCount]); //FAIL
NSLog(@"But his variable is actually just pointing at uninitialised 0x0, so you're not reading this in the debugger because the application has crashed before it got here."
}

应该补充一点,init 也在drawRect 之前被调用。大家有什么想法吗?

最佳答案

吗?您是否真的在其中调用了 NSLog 并进行了检查?因为我认为它是用 initWithFrame: 或类似的东西初始化的。

编辑:一些简短的测试表明问题不是 fred 未初始化;而是 fred 未初始化。如果它是;您不会收到任何错误,因为向 nil 发送消息不会导致崩溃。 (实例变量被初始化为nil)。事实上,正在发生的事情是,fred 沿线的某个地方被释放了;导致指针指向垃圾,而不是对象。 (或者更确切地说,是一个无法再接收消息的乱码或垃圾对象。)

您提供的代码不足以查找错误;您将必须粘贴更多内容(以及应用程序中使用的确切代码)。

关于cocoa - UIView绘制矩形;类变量超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2712502/

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