0
我對objective-c和編程非常陌生。我已經讀過一個關於objective-c的stackoverflow上發佈的問題之一,它是「不良形式」,直接到訪問超類的實例變量。下面是什麼,我認爲這意味着直接從超類(例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];
道歉,如果這個問題是無關緊要的,或者我沒有道理。另外,如果我錯誤地理解了訪問超類的實例變量時可能存在的錯誤形式,這表示歉意。此外,如果這個問題已經被問到(我找不到任何類似的問題) - 如果有的話,道歉,這個問題的鏈接將是有益的。謝謝。
我看不出任何使用示例2的原因。例如1好, – 2012-03-04 10:45:20
謝謝。有什麼樣的例子,它可能被認爲是一種超類的實例變量被訪問的不良形式? – markckim 2012-03-04 10:56:46
如果從子類訪問ivar不好,應該用'@ private'保護,而不能從子類訪問 – 2012-03-04 11:20:43