2017-04-11 86 views
1

我有一个关于在Objective-C中修改实例变量的子类&的查询。在子类中修改变量

假设我有类说一个与.H & .M

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

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

A有两个子说 & Ç

@interface B : A 
    { 
    } 
@end 

@implementation B 

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

现在,当我尝试访问'myVariable'的子类C

@interface C : A 
{ 
} 
    @end 

@implementation C 

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

在日志中我发现值为:123

谁能帮助我了解为什么我没有得到这在B级被修改变种的“MYVARIABLE”更新值

+6

因为'C'对'B'一无所知。他们有一个共同的祖先并不重要。没有冒犯性,但似乎你应该阅读面向对象编程及其原理。 – Losiowaty

+0

您正在记录C中继承自A的值。您将获得在A中初始化的字符串值。 –

+1

如果您从B继承C,则会是另一回事 – Paulw11

回答

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

    So it prints "123"