2012-01-30 47 views
1

我剛開始學習Objective-C,我試圖學習的一件事是物業的使用。我目前正在嘗試使用自定義setter創建一些屬性。這是我得到了多少:在Obj-C中創建屬性,我該如何編寫默認的Getter?

@interface MyClass : NSObject 
@property (nonatomic, assign) int myNumber; 
@end 

@implementation MyClass 
@dynamic myNumber; 

- (int)myNumber { 
    return ???; 
} 

- (void)setMyNumber:newNumber { 
    myNumber = newNumber; 
    // custom stuff here 
} 

我真的只是想實現一個自定義setter,我很好,getter是默認的。但是,如何直接訪問變量?如果我把「返回self.myNumber」,是不是隻是調用getter方法和無限循環?

回答

2

僅當使用x.p表示法時才調用屬性訪問函數。你可以通過p訪問支持屬性的實例變量(在Objective C中,所有成員都有範圍內的類實例變量)。如果您真的想要,也可以通過指針參考符號->進行訪問。因此,任何兩個的:

return p; 

return self->p; 

但是,你不必在這裏使用@dynamic@synthesize很聰明,只會在你沒有提供默認值的情況下創建。所以隨意只是

@synthesize p; 

,這將創造的吸氣劑,但不是在這種情況下,二傳手。

+0

太棒了,非常感謝!我的印象是,如果你想要自定義的getter和setter,你必須使用'@ dynamic',但是你是對的,'@ synthesize'非常聰明! 我確實嘗試過'self> p',但Xcode用格式突出顯示了它,我認爲這是一個錯誤。原來這只是一個警告,說「你的意思是'self.p'?' – commscheck 2012-01-31 07:39:46

0
- (int)myNumber { 
    return myNumber; 
} 
相關問題