2017-04-11 12 views
1

Objective-Cでインスタンス変数を変更するサブクラス&に関するクエリがあります。サブクラスで変数を変更する

私はクラスで私がアクセスしようとすると、Aは2つのサブクラスがB & C今

@interface B : A 
    { 
    } 
@end 

@implementation B 

    -(void)viewDidLoad 
    { 
    [super viewDidLoad]; 
    self.myVariable = @"Modified Here"; 
    } 
@end 

を言っていた.h & .M

@interface A : NSObject 
    @property(nonatomic, retain) NSString *myVariable; 
@end 

@implementation A 
    -(void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     [email protected]"123"; 
    } 
    @end 

を言っていると仮定サブクラスCの「myVariable」

ログには
@interface C : A 
{ 
} 
    @end 

@implementation C 

- (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     NSLog(@"Value is : %@",self.myVariable); 
    } 
@end 

iは価値があるが見つかりました:123

誰もが、私はクラスBに変更されているVARの「myVariable変数」更新された値を取得していない午前理由を理解するために私を助けることができる

+6

'C'は' B'について何も知らないので。彼らは共通の祖先を持っていることは重要ではありません。犯罪はありませんが、オブジェクト指向プログラミングとその原則についてお読みください。 – Losiowaty

+0

Aから継承したCの値をログに記録しています。文字列の値がAで初期化されます。 –

+1

CをBから継承すると、別の問題になります – Paulw11

答えて

1
   A ("123") 
       | 
       | 
     -------------- 
     |    | 
     B    C 
("Modified Here") ("123") this is inherited from A 

    So it prints "123" 
関連する問題