版權聲明:未經本人允許,禁止轉載.
1.定義普通函數(一個參數)
由于NSNumber使用不方便,所以自定義函數,如下就可以直接使用Integer(num)函數
//聲明
FOUNDATION_EXPORT NSNumber *Integer(NSInteger num);
//實現
NSNumber *Integer(NSInteger num) {
return [NSNumber numberWithInteger:num];
}
宏FOUNDATION_EXPORT 全局聲明 大多數情況下等同于extern
NSNumber * 函數返回類型
Integer() 函數名
NSinteger 參數類型
num 實例變量
2.定義可變參函數
類似于NSLog(...)函數,參數個數不確定,如下,從寫了stringWithFormat:方法
//聲明
FOUNDATION_EXPORT NSString *String(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);
//實現
NSString *String(NSString *format, ...) {
va_list args;
va_start(args, format);
NSString *str = [[NSString alloc] initWithFormat:format arguments:args];
va_end(args);
return str;
}
va_list args: 定義一個指向個數可變的參數列表指針args
va_start(args, format): 使參數列表指針args指向函數參數列表中的第一個可選參數format
va_arg(args, id): 返回參數列表指針args所指的參數,返回類型為type,并使指針args指向參數列表中下一個參數
va_end(args): 清空參數列表,并置參數指針args無效