0

Aスーパークラスのメソッドをにサブクラス化して、新しい機能で拡張したいと思いBます。インスタンス変数はデフォルトでに設定されているため@protected、それらへのアクセスは問題ありません。xただし、メソッドで行ったインスタンス変数への変更Aは反映されませんB。その逆も同様です。

@interface A : NSObject {
    X *x;
}

- initWithX:(X *)anX;

@end

@implementation A

- initWithX:(X *)anX
{
    assert(anX != nil);
    if (self = [super init]) {
        x = anX;
    }
    assert(self != nil);
    return self;
}

@end

@interface B : A

@end

@implementation B

- initWithX:(X *)anX
{
    assert(anX != nil);
    if (self = [super initWithX:anX]) {
        assert(x != nil);      <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< FAILS
    }
    return self;
}

@end

xとの間Aで変数を共有するにはどうすればよいBですか?

4

1 に答える 1

3

コードをもう一度確認してください。そしてまたしても。このコード本当に機能しているはずです...これは、継承されたインターフェイスと親インターフェイスの間の基本的な関係のようなものであり、期待どおりに動作するはずです。

サンプルから削除したコード内の何かである必要があります。

于 2012-06-05T16:23:46.407 に答える