版权声明:未经本人允许,禁止转载.
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无效