2017-04-11 4 views
1

Ich habe eine Abfrage in Bezug auf Unterklasse & Änderung Instanzvariable in Objective-C.Veränderliche Variable in Unterklasse

Angenommen, ich habe Klasse sagen A mit .h & .m

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

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

A hat zwei Unterklassen Say B & C

@interface B : A 
    { 
    } 
@end 

@implementation B 

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

Wenn ich jetzt versuchen, zuzugreifen 'myVariable' in der Unterklasse C

@interface C : A 
{ 
} 
    @end 

@implementation C 

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

In log gefunden i Wert: 123

Kann jemand mir helfen, zu verstehen, warum ich nicht aktualisierter Wert von var bekommen 'myVariable', die in der Klasse B. modifiziert wird

+6

Weil 'C' nichts über' B' weiß. Es spielt keine Rolle, dass sie einen gemeinsamen Vorfahren haben. Nichts für ungut, aber es scheint, dass Sie über objektorientierte Programmierung und ihre Prinzipien nachlesen sollten. – Losiowaty

+0

Sie protokollieren den Wert in C, der von A erbt. Sie erhalten den in A initialisierten String-Wert. –

+1

Wenn Sie C von B erben, wäre das eine andere Sache – Paulw11

Antwort

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

    So it prints "123" 
Verwandte Themen