2015-10-01 18 views
-1

我想通過NSTimer中的選擇器方法發送一個字符數組。我的targetMethod將採用數組的前36個值並在每個時間間隔執行其函數,每次增加36,直到達到char數組的末尾。通過NSTimer傳遞一個字符數組

[NSTimer scheduledTimerWithTimeInterval:2.0 
    target:self 
    selector:@selector(targetMethod:) 
    userInfo:nil 
    repeats:NO] 

我還沒有找到一種方法來使用的NSDictionary要麼做,我寧願沒有:但是,當使用以下格式看起來好像的NSTimer只允許您與用戶信息發送NSObjects執行昂貴的轉換爲NSArray。

我發送的char數組包含36-9500的任何值。是否有可能與NSTimer一起使用char數組?如果沒有,是否有一種方法可以使用全局指針來引用可以通過targetMethod中的指針訪問的數組?

+0

'char array []'或'char * array []'?如果前者,你可以很容易地把它變成一個'NSString'或'NSData',然後重新分解它。 –

+0

您無法將任何參數傳遞給您的'targetMethod:'選擇器。根據定義,它只會得到'NSTimer',因爲它是一個參數。 – rmaddy

回答

0

如果您不想將轉換爲NSObjects,因爲您認爲它對您的應用程序來說代價太高,您可以始終將char數組全局/公開可用。

只需爲它創建一個屬性或實例變量並從選擇器中以這種方式訪問​​它即可。

否則,你將不得不轉換爲NSString或NSData並通過它。我想不出一種乾淨地重寫數據傳遞的方法。

+0

userInfo可以是任何類。您可以傳遞NSString或NSData本身。 – Willeke

+0

更新!感謝您的評論 – AlexKoren

-1

NSTimer的用戶信息對象不需要是一個NSDictionary,所以你其實可以通過你的NSArrayuserInfo。不過,我相信目標方法的第一個參數將會傳遞NSTimer實例本身,這可能不是您想要的。使用dispatch_async可能會帶來更好的運氣,您可以在2秒內傳遞一個要執行的塊並直接使用NSArray調用該方法。

相關問題