2012-06-15 25 views
-1

在.h文件中如何使用getter和setter啓動和停止函數?

@interface ViewController : UIViewController { 
      @private int intVariable1; 
    } 
    @property (readwrite,assign) int iVar; 

    -(void)Callme; 
    @end 

在.m文件

@implementation ViewController 
@synthesize iVar=intVariable1; 

-(void)Callme 
{ 
     NSLog(@」Callme called」); 
} 

-(void)setIVar:(int)inIVar 
{ 
     intVariable1 = inIVar; 
     [self Callme]; 
} 
@end 

我實現這個代碼來調用「呼我」功能,當變量狀態的變化,但是當我調用viewDid功能setIVar加載它不起作用,任何想法調用這個? 辦法,我習慣叫

[self setIVar:3]; 
+0

您是否嘗試明確聲明該setter? – CodaFi

+0

親愛的主席先生,我對Objective C和編碼有點新意,你明確聲明setter是什麼意思?謝謝! – sam

+0

您的實現與接口名稱不同。這是爲什麼? – borrrden

回答

0

如果你想提供自己的getter/setter函數使用@synthesize指令在執行實施!這將生成自己的-(void)setIVar:(int)inIVar-(int)iVar方法,這些方法可能會隱藏您的版本。反過來,如果你想要一個readwrite屬性,你還必須實現這個獲取者,即-(int)iVar

簡單地從您的實施中刪除@synthesize iVar=intVariable1;行,並把實施也-(int)iVar

+0

他們不會隱藏您的版本。事實上,如果你只定義一個setter或getter,那麼你必須*合成(假設讀寫)。如果編譯器已經存在,編譯器就知道不會生成方法。 – borrrden

+0

:O ...人們讓我不滿意我的問題,但我仍然想知道最佳解決方案是什麼! :)謝謝你的回答,你對@borrrden的回答是什麼? – sam

+0

如果@borrrden是正確的,那麼你使用這些方法的方式會有一些其他問題。如果還有更多相關的部分,請考慮發佈更多的代碼。 – MrTJ