iOS ... NS_REQUIRES_NIL_TERMINATION

看到官方的一个例子不错,这里留记。

#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

地址:https://developer.apple.com/library/mac/qa/qa1405/_index.html

最经常见到的应该是UIAlertView里用的了。

- (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id /*<UIAlertViewDelegate>*/)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION;
时间: 2024-10-09 07:11:32

iOS ... NS_REQUIRES_NIL_TERMINATION的相关文章

iOS 不定参数方法,类似UIAlertView的方法

//-------------------------- 方法申明 -------------------------- /** *  模仿UIAlertView方法 * *  @param argument 不定参数个数 */ - (void)copyAlertViewMethod:(id)argument, ... NS_REQUIRES_NIL_TERMINATION;//加了NS_REQUIRES_NIL_TERMINATION自动补齐功能就会自动在后面加nil //----------

iOS开发技巧 -- 复用代码片段

如果你是一位开发人员在开发过程中会发现有些代码无论是在同一个工程中还是在不同工程中使用率会很高,有经验的人会直接封装在一个类里,或者写成一个宏定义或者把这些代码收集起来,下次直接使用,或者放到xcode的代码片库里,直接使用, 从而提高开发效率: 1. 将常用代码片段封装成一个类里 当一个代码片在一个或多个工程之中经常出现时,把他封装在一个类里面,在使用时候直接传参即可实现对于功能,或者直接把这类放到另一个工程中同样使用: 使用UIAlertView举例 创建一个XF_UIKit类,对于声明文件

【死磕iOS】8 次尝试,带你走进 iOS 精益编程

转自:http://www.cocoachina.com/ios/20151026/13884.html 开场 今天, 我们将从一个小功能开始, 先去不假思索的实现它 Product Repository: Filtering Operation Code start 有一个产品库, 我们要对它做过滤操作. 第一个需求并不复杂. 需求1:在仓库中查找所有颜色为红色的产品 First Attempt: Hard Code 我们先用最简单的方式去实现它, 硬编码 1 2 3 4 5 6 7 8 9

IOS Core Image之一

项目中要实现高斯模糊的效果,今天看了下Core Image这块的内容, 主要包括CIImage.CIFilter.CIContext.CIDetector(检测).CIFeature(特征)等类. 今天先记录下CIImage.CIFilter.CIContext三个类的使用. 一.基本的滤镜效果需要以下步骤 1.创建CIImage对象 2.创建CIContext对象用作画布 3.创建CIFilter对象 4.输出滤镜 二.创建上面三个对象的API 1.创建CIImage对象 主要通过以下方法( 

iOS:简单使用UIAlertVIew和UIActionSheet

做iOS开发的同学想必都用过UIAlertVIew或者UIActionSheet.UIAlertVIew 可以弹出一个出现在屏幕中间的提示视图,给用户展示信息,并让用户自己选择操作,UIActionSheet可以弹出一个选择列表,让用户选择列表中的某一项操作.使用UIAlertVIew和UIActionSheet非常简单,以下是一个简单的示例代码: //UIAlertView - (void)someButtonClicked {//初始化AlertView UIAlertView *alert

ios objective-c之-9:字典,可变字典 (NSDictonary NSMutableDictoray)

一:字典的基础讲解 NSDictionary(字典),NSDictionary类似于 .net中的parameter,l类似于java中的map. 通过唯一的key找到对应的值,一个key只能对应一个只,而多个key可以对应同一个值.NSDictionary 在初始化之后,就不可以再进行修改. 使用类方法创建NSDictionary对象. 初始化一个NSDictionary对象.使用+ (id)dictionaryWithObject:(id)object forKey:(id)key; NSD

iOS 精益编程

开场 今天, 我们将从一个小功能开始, 先去不假思索的实现它 有一个产品库, 我们要对它做过滤操作. 第一个需求并不复杂. 需求1:在仓库中查找所有颜色为红色的产品First Attempt: Hard Code 我们先用最简单的方式去实现它, 硬编码 - (NSArray *)findAllRedProducts:(NSArray *)products { NSMutableArray *list = [@[] mutableCopy]; for (Product *product in pr

iOS 使用UI控件的外观协议UIAppearance进行设置默认UI控件样式

在iOS开发中,经常会对UINavigationBar的样式进行全局样式.采用的设置方式有两种: 第一种,采用方式如下: [UINavigationBar appearance] 这种是对一类对象的默认全局外观样式设置,它对设置时机有要求. 通常需要在UIWindow的viewlayout之前.错过了时机后,设置是没有效果的. 可以选择在下面方法内设置: - (BOOL)application:(UIApplication *)application didFinishLaunchingWith

iOS -- SKSpriteNode类

SKSpriteNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKSpriteNode.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术