Доступ к переменным экземпляра суперкласса, правильной формы - PullRequest
0 голосов
/ 04 марта 2012

Я очень плохо знаком с целью-c и программированием.Я прочитал в одном из вопросов, размещенных на stackoverflow, касающемся target-c, что «плохая форма» - прямой доступ к переменным (ам) экземпляра суперкласса.Ниже приведен пример того, что, как я думал, означало прямой доступ к переменной экземпляра из суперкласса (Пример 1), и что я думаю, это может означать использование правильной формы (Пример 2):

// ExampleSuperClassMonster.h
@interface ExampleSuperClassMonster : CCSprite {
    int hp; // hitpoints
}
@property (readwrite) int hp;
@end

// ExampleSubClassMonster.h
@interface ExampleSubClassMonster : ExampleSuperClassMonster {
@end

// Example 1: is this bad form??
ExampleSubClassMonster *subClassMonster = [[ExampleSubClassMonster alloc] init];
subClassMonster.hp = 100;

// Example 2: is this correct form??
ExampleSubClassMonster *dummyMonster = [[super alloc] init];
dummyMonster.hp = 100;
ExampleSubClassMonster *subClassMonster = [[ExampleSubClassMonster alloc] init];
subClassMonster.hp = dummyMonster.hp;
[dummyMonster release];

Извиняюсь, если этот вопрос не имеет значения или я не имею смысла.Кроме того, извиняюсь, если я неправильно понял, что может означать плохая форма доступа к переменным экземпляра суперкласса.Кроме того, извиняюсь, если эти вопросы уже задавались (я не мог найти подобные вопросы) - если это так, будет полезна ссылка на этот вопрос.Спасибо.

1 Ответ

0 голосов
/ 04 марта 2012

Пример 1 в порядке.[super init] должен вызываться из метода init подкласса.

- (id) init {
    self = [super init];
    if (self) {
        // Init
    }
    return self;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...