Очень странная ошибка C - PullRequest
1 голос
/ 26 мая 2011

Я бы сказал, что знаю цель C довольно хорошо.Но я только что обнаружил ошибку в чем-то очень странном.У меня есть "Int Mode;"переменная-член в классе.И просто пишу "режим";в методе 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 Ответ

8 голосов
/ 26 мая 2011

Ссылка на mode является сокращением для self->mode, что побуждает блок сохранять экземпляр класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...