2011-02-25 42 views
5

快速的問題,有沒有一種方法來指定@selector是另一個對象上的方法。目前我通過使用本地方法來調用遠程方法來解決一個解決方案,但它感覺笨重。指定另一個對象上的@selector方法?

[NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(timerLocation) userInfo:nil repeats:YES]]; 

- (void)timerLocation { 
    [[self dataModel] startUpdatingLocation]; 
} 

回答

11

這是什麼NSTimerscheduledTimerWithTimeInterval:target:selector:userInfo:repeats:方法的target部分是。 (即:指定要調用的對象作爲目標,並將對象的方法的名稱指定爲選擇器。)

+4

在這裏展開思路,選擇器不是函數指針。這是一個消息名稱。它不受任何特定類別的束縛。這就是爲什麼你需要通過目標和選擇器。爲避免輸入錯誤,我通常建議在編譯時傳遞-Wselector(「Undeclared Selector」警告)以確保您的@selector()確實存在於系統中的某個位置(這不能確保選擇器對於類是有效的傳遞給,只是它存在)。在這種情況下,您通常需要#包含目標對象的標題。 – 2011-02-25 15:17:32

+0

Upvote +1,因爲它有很多幫助。謝謝。 :) – iLearner 2012-10-18 09:45:12

2
[NSTimer scheduledTimerWithTimeInterval:10 target:someOtherObject selector:@selector(timerLocation) userInfo:nil repeats:YES]; 
相關問題