Re: [問題] 在Obj-C的method 如何在一個引數中傳入 …

看板MacDev作者 (狗狗)時間15年前 (2010/03/26 00:09), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串5/5 (看更多)

03/25 00:50,
宣告方式就是
03/25 00:50

03/25 00:50,
+ (id)dictionaryWithObjectsAndKeys:(id)firstObject,
03/25 00:50

03/25 00:50,
...;
03/25 00:50

03/25 00:52,
03/25 00:52

03/25 00:52,
Apple 自己的宣告後面會加 NS_REQUIRES_NIL_TERMINATION
03/25 00:52

03/25 00:53,
不加也行, 沒仔細試過, 不過應該是丟 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

03/26 00:12, , 1F
如果我寫的code有不太好的地方 歡迎指正 :)
03/26 00:12, 1F

03/26 06:08, , 2F
我都是用 NSDictioary 傳入大量不定數量的參數.方便很多
03/26 06:08, 2F

03/26 06:09, , 3F
你用這種舊C的方法會讓人不知道每個陣列內容是什麼意義
03/26 06:09, 3F

03/26 21:41, , 4F
只是方便呼叫而已 XD
03/26 21:41, 4F
文章代碼(AID): #1BgugfU8 (MacDev)
文章代碼(AID): #1BgugfU8 (MacDev)