2017-04-11 74 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"