我说我很了解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;
}
答案 0 :(得分:8)
对mode
的引用是self->mode
的简写,它会导致该块保留类实例。