// NS_REQUIRES_NIL_TERMINATION, 用於編譯時非nil結尾的檢查
- (void)mutableArgumentsFunction:(NSString *)arg1, ... NS_REQUIRES_NIL_TERMINATION
{
// 定義一個指向可選參數列表的指針
va_list args;
// 獲取第一個可選參數的地址,此時參數列表指針指向函數參數列表中的第一個可選參數
va_start(args, arg1);
if(arg1)
{
// 遍歷參數列表中的參數,並使參數列表指針指向參數列表中的下一個參數
NSString *nextArg;
while((nextArg = va_arg(args, NSString *)))
{
NSLog(@"ARG :%@", nextArg);
}
}
// 結束可變參數的獲取(清空參數列表)
va_end(args);
}
特別注意:
1.可變參數只能是所有參數中的最後一個
2.NS_REQUIRES_NIL_TERMINATION, 用於編譯時非nil結尾的檢查
應用場景:
1.重寫UIAlertView時可以參考一下這個方法
2.重寫NSLog