私はobjective-cを学び、何らかの問題を起こそうとしています。私はクラスCreatureを作成し、それをDogクラスで拡張しました。クラスをobjective-cで拡張する
しかし、メソッドの状態を呼び出すとき、戻り値はDogではなく、クリーチャークラスから呼び出されたように見えます。 githubのsource
P.S.ため
リンクあなたはanoutherバグやメモリリークポイントを見つけた場合、私に報告してください)
コード:
@interface Creature: NSObject
- (NSString *)state;
..
@implementation Creature
- (NSString *)state
{
return [_name stringByAppendingString: ([self isHungry] ? @" is hungry" : @" not hungry")];
}
// Dog
@interface Dog: Creature
..
@implementation Dog
- (NSString *)state
{
return [[super state] stringByAppendingString: ([self isFriendly] ? @" and friendly" : @" and unfriendly")];
}
そして方法
Dog *creature = [Dog CreatureBorn];
NSLog([creature state]);
リンクを確認したい人はいません。だから、[SSCCE](http://sscce.org/)を投稿してみてください。 – Jomoos
ソースは非常に小さいです) – Kein
'+ CreatureBorn'メソッドが何をしているかを見せてください。おそらく初期化子は 'self'を初期化していないでしょうが、' Creature'クラスは初期化しています。 –