推 Blueshiva:宣告方式就是 03/25 00:50
→ Blueshiva:+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, 03/25 00:50
→ Blueshiva:...; 03/25 00:50
→ uranusjr:Apple 自己的宣告後面會加 NS_REQUIRES_NIL_TERMINATION 03/25 00:52
→ uranusjr:不加也行, 沒仔細試過, 不過應該是丟 exception 用的 03/25 00:53
感謝兩位!參考了幾個網頁 寫了一個簡單的來用測試...
@implementation
-(void) testMethod:(id) firstObject,...{
NS_REQUIRES_NIL_TERMINATION; //這行在iPhone OS下似乎無作用
NSMutableArray *list = [NSMutableArray array];
if (firstObject){
va_list argumentList;
va_start(argumentList, firstObject);
do {
[list addObject: firstObject]; //在此區塊實作想做的事
} while (firstObject = va_arg(argumentList, id));
va_end(argumentList);
}
NSLog(@"%@",list); //test用
}
NS_REQUIRES_NIL_TERMINATION這行在iPhone OS下 當傳入參數並非nil結尾時
無法讓compiler發出error訊息
不過我實際上傳入參數無論是否以nil為結尾 似乎都沒有問題(真的是這樣嗎?)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 116.59.14.185
→ leondemon:如果我寫的code有不太好的地方 歡迎指正 :) 03/26 00:12
→ shelary:我都是用 NSDictioary 傳入大量不定數量的參數.方便很多 03/26 06:08
→ shelary:你用這種舊C的方法會讓人不知道每個陣列內容是什麼意義 03/26 06:09
→ leondemon:只是方便呼叫而已 XD 03/26 21:41