2012-07-14 79 views
1

只是一個簡單的問題......說我創建了一個按鈕,並增加了一些行動,以它:調用按鈕操作功能

-(IBAction)btnclicked:(id)sender { 
     //some code here 
} 

現在我想調用它,這樣我可以做到這一點:

[self btnclicked:self]; 

所以我的問題是selfbtnclicked發揮什麼作用?爲什麼這樣寫是錯的:

[self btnclicked:sender]; 

請大家幫忙。

回答

1

sender是類型id,可以是任何objective-c對象(或nil)。所以你可以將任何你喜歡的東西傳遞給方法,編譯器會很高興。

你在那個方法裏面做的事情可能會讓某種UIControl變得異常,所以如果你傳入一個UIView或者NSString或者其他東西,那麼可能會有一個無法識別的選擇器或者其他的崩潰。換句話說,只要你知道你在做什麼,你就可以傳遞你喜歡的東西。

您的問題是關於傳入發件人是錯誤的。我猜這是給編譯器警告,因爲發件人在您使用它的上下文中未定義。 sender是給方法內參數賦予的變量名,它不是一個全局變量或常量,可以傳遞