认识NS_REQUIRES_NIL_TERMINATION
来源:互联网 发布:给json对象添加属性 编辑:程序博客网 时间:2024/06/06 17:32
NS_REQUIRES_NIL_TERMINATION是系统中多参数传值的一个宏,用于编译时非nil结尾的检查。
找到了官网上的一个栗子:
#import <Cocoa/Cocoa.h>@interface NSMutableArray (variadicMethodExample)- (void) appendObjects:(id) firstObject, ...; // This method takes a nil-terminated list of objects.@end@implementation NSMutableArray (variadicMethodExample)- (void) appendObjects:(id) firstObject, ...{id eachObject;va_list argumentList;if (firstObject) // The first argument isn't part of the varargs list, { // so we'll handle it separately. [self addObject: firstObject]; va_start(argumentList, firstObject); // Start scanning for arguments after firstObject. while (eachObject = va_arg(argumentList, id)) // As many times as we can get an argument of type "id" [self addObject: eachObject]; // that isn't nil, add it to self's contents. va_end(argumentList); }}@end
感觉还不错呦,自己也可以模仿着写一个的:
ZW_UIKit.h
#import <Foundation/Foundation.h>@interface ZW_UIKit : NSObject+ (NSArray *)getMoreArguments:(NSString *)strs,...NS_REQUIRES_NIL_TERMINATION;@end
ZW_UIKit.m
#import "ZW_UIKit.h"@implementation ZW_UIKit#pragma mark - 获取多参数+ (NSArray *)getMoreArguments:(NSString *)strs,...{ va_list args; va_start(args, strs); NSMutableArray *allArray = [NSMutableArray array]; for (NSString *str = strs; str != nil; str = va_arg(args,NSString*)) { [allArray addObject:str]; } va_end(args); return allArray.copy;}@end
调用:
[ZW_UIKit getMoreArguments:@"arg1",@"arg2",@"arg3", nil];
0 0
- 认识NS_REQUIRES_NIL_TERMINATION
- iOS ... NS_REQUIRES_NIL_TERMINATION
- iOS 多参数 ...NS_REQUIRES_NIL_TERMINATION 的写法
- iOS 多参数 ...NS_REQUIRES_NIL_TERMINATION 的写法
- 多参数函数的写法...NS_REQUIRES_NIL_TERMINATION
- iOS 多参数 ...NS_REQUIRES_NIL_TERMINATION 的写法
- iOS 多参数 ...NS_REQUIRES_NIL_TERMINATION 的写法
- [objective-c]编译出错 -- NS_REQUIRES_NIL_TERMINATION Error
- 认识
- 认识
- 认识
- 认识
- 认识自己,认识世界
- 认识Whidbey
- SAML认识
- 认识EAI
- 认识blog
- 认识表单
- My SQL函数
- ROS Navigation-----nav_core简介
- java.lang.IllegalArgumentException: The observer is null.异常解决
- Android网络请求框架第一弹——起始篇
- laravel php artisan console 二. 附加参数与案例
- 认识NS_REQUIRES_NIL_TERMINATION
- java基础学习视图
- IE、Chorme 、Firefox 隐藏滚动条
- Android Activity process(进程设置)
- 2016/11/27月赛总结
- 如何开发一个扫雷小游戏?
- a breathtaking view
- iOS单元测试(作用及入门)
- 区块链(二)——第五次颠覆性的新计算范式