作者leondemon (狗狗)
看板MacDev
标题Re: [问题] 在Obj-C的method 如何在一个引数中传入 …
时间Fri Mar 26 00:09:11 2010
1F:推 Blueshiva:宣告方式就是 03/25 00:50
2F:→ Blueshiva:+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, 03/25 00:50
3F:→ Blueshiva:...; 03/25 00:50
5F:→ uranusjr:Apple 自己的宣告後面会加 NS_REQUIRES_NIL_TERMINATION 03/25 00:52
6F:→ 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
7F:→ leondemon:如果我写的code有不太好的地方 欢迎指正 :) 03/26 00:12
8F:→ shelary:我都是用 NSDictioary 传入大量不定数量的参数.方便很多 03/26 06:08
9F:→ shelary:你用这种旧C的方法会让人不知道每个阵列内容是什麽意义 03/26 06:09
10F:→ leondemon:只是方便呼叫而已 XD 03/26 21:41