2012-06-11 60 views
0

我對objective-c是全新的,我目前處於學習過程中, 我有一個父類A,其屬性a, 我試圖訪問屬性在子類B, 當我訪問屬性,並指定這樣使用消息樣式語法訪問子類中的屬性

[self a:3]; 

值它不抱怨無可見@interface爲B宣稱選擇器

,但如果我訪問它,從它像閱讀 int something = [self a]; 那麼它不會抱怨。

我知道推薦的方法來訪問屬性是使用。在對象和屬性之間,但從技術上講它應該與消息樣式調用一起工作。但事實並非如此,所以請在此告訴我。

我的代碼是這樣的

// Test class A 
@interface A : NSObject 

@property int a; 

-(void) initMe; 

@end 

@implementation A 

@synthesize a; 

-(void) initMe 
{ 
NSLog(@"I am in A"); 
} 
@end 

//------------------------- 

@interface B : A 

-(void) initEx; 

@end 

@implementation B 

-(void) initEx 
{ 
    // This line gives a problem as I mentioned above 
    [self a:3]; 
    NSLog(@"In child class B"); 
} 

@end 

///----------------------- 

回答

3

[self a:3];是錯誤的語法。如果你要撥打的setter方法,它應該是:

[self setA:3]; 
+0

謝謝,但它的奇怪,當我想讀一個值自一]的作品,而不是[個體經營木屐。爲什麼這個不同的命名風格獲取和設置.. :( – Ahmed

+1

@Ahmed你可以在這裏找到所有關於它:https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/objectivec/Chapters/ocProperties .html#// apple_ref/doc/uid/TP30001163-CH17-SW17 – Alladinian

+0

因爲這是蘋果公約,千萬不要使用'get ...',總是使用'set ...'。 –