UIView drawRect;类变量超出范围

时间:2010-04-26 09:59:11

标签: cocoa uiview

简短&根据新信息我最后一个问题的甜蜜版本。

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

我在 - (id)init方法中分配和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."
}

还应该在drawRect之前添加init IS。有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

吗?您是否实际拨打了NSLog并且已检查?因为我认为它是用initWithFrame:或其他东西初始化的。

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

您提供的代码不足以找到错误;你将不得不粘贴更多(以及你的应用程序中使用的确切代码)。