非常奇怪的Objective C错误

时间:2011-05-25 22:30:40

标签: objective-c

我说我很了解Objective C.但我只是将一个错误追踪到一个非常奇怪的东西。 我有一个" int模式;"类中的成员变量。只需编写"模式;"在init方法中更改了类的行为(以后它不会被释放) 即使编译器给我警告"声明没有效果"

发生了什么事? 我可以不确定何时取消分配对象?

我的代码更详细一点:

@interface HelpScene : CCScene {
    int mode;
}

并在实施中

- (id) init {
    if (self=[super init]) {
        [[SomeObject alloc] initWithBlock:^(id sender) {
            mode;  // CHANGES BEHAVIOUR
            [Call CCDirector.replaceScene which usually ends up deallocing self
            (the current scene). But not with the previous line anymore]
        }
    }
    return self;
}

1 个答案:

答案 0 :(得分:8)

mode的引用是self->mode的简写,它会导致该块保留类实例。