为什么Objective-C数组参数不使用冒号?

唐·莎巴齐

我目前正在从大型牧场指南中学习一些Objective-C。我的理解是,具有多个参数的方法使用冒号分隔每个参数,但是在阅读有关创建数组的内容时,我发现了以下代码片段:

 NSArray *dateList = [NSArray arrayWithObjects:now, tomorrow, yesterday, nil];

这让我感到困惑,因为我认为Objective-C方法参数必须在每个方法名称之前加上一部分方法名称以及冒号。有人可以向我解释吗?

格罗芬德尔

这是规则的例外;这通常称为可变参数方法如果您查看NSArray.h中的定义:

+ (instancetype)arrayWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION;

您会看到可以指定任意数量的参数,只要最后一个参数是这样nil(这被称为sentinel)。

这样可以避免开发人员创建大量功能大致相同的不同方法,每个方法都接受不同数量的参数。他们这样做是NSObject在你有的地方

- (id)performSelector:(SEL)aSelector withObject:(id)object1;
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;

(但没有其他方法)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在Objective-C中指向ivar的指针不好?

来自分类Dev

Objective-C-为什么我可以给指针赋值?

来自分类Dev

为什么在Objective-C中方法的名称这么长

来自分类Dev

Objective-C为什么需要__NSGlobalBlock__

来自分类Dev

为什么Objective-C异常不友好?

来自分类Dev

Objective C故事板为什么ParentViewController为零

来自分类Dev

为什么这个Objective-C ++程序不能编译?

来自分类Dev

为什么堆栈使用数组,为什么不使用链表

来自分类Dev

C#中的冒号参数,冒号代表什么

来自分类Dev

为什么不使用C ++调用Destructor?

来自分类Dev

在Objective-C中使用C ++类-为什么要使用PImpl习惯用法?

来自分类Dev

为什么需要在Objective-C中使用@property关键字?

来自分类Dev

为什么我不能使用从Objective-C对象到Swift属性的KVC?

来自分类Dev

为什么在Objective-C的函数定义中使用(__weak类)?

来自分类Dev

设置变量时使用viewDidLoad或initWithCoder进行Objective-C iOS开发,为什么?

来自分类Dev

为什么需要在Objective-C的头文件中使用“外部静态”定义常量?

来自分类Dev

为什么需要在Objective-C的头文件中使用“外部静态”来定义常量?

来自分类Dev

为什么我不能在子类中使用超类的属性(Objective-C)

来自分类Dev

为什么循环使用“ scanf”方法在Objective-C语言中出现死圈?

来自分类Dev

为什么 Objective-C 不能在受保护的函数指针中使用“self”对象?

来自分类Dev

为什么没有像其他Objective-C对象那样通过指针处理Objective-C块?

来自分类Dev

用函数对数组进行排序而不使用 C 中的指针是行不通的。为什么?

来自分类Dev

为什么我可以不使用LINQ条件而保留参数?

来自分类Dev

为什么Task对象不使用传递给它的参数?

来自分类Dev

为什么std :: stack不使用模板template参数?

来自分类Dev

为什么函数printk()不使用逗号分隔参数?

来自分类Dev

为什么GNU扩展清理不使用任何参数

来自分类Dev

为什么不使用此原始sql中的参数?

来自分类Dev

为什么ArrayList.execute()不使用给定参数?

Related 相关文章

  1. 1

    为什么在Objective-C中指向ivar的指针不好?

  2. 2

    Objective-C-为什么我可以给指针赋值?

  3. 3

    为什么在Objective-C中方法的名称这么长

  4. 4

    Objective-C为什么需要__NSGlobalBlock__

  5. 5

    为什么Objective-C异常不友好?

  6. 6

    Objective C故事板为什么ParentViewController为零

  7. 7

    为什么这个Objective-C ++程序不能编译?

  8. 8

    为什么堆栈使用数组,为什么不使用链表

  9. 9

    C#中的冒号参数,冒号代表什么

  10. 10

    为什么不使用C ++调用Destructor?

  11. 11

    在Objective-C中使用C ++类-为什么要使用PImpl习惯用法?

  12. 12

    为什么需要在Objective-C中使用@property关键字?

  13. 13

    为什么我不能使用从Objective-C对象到Swift属性的KVC?

  14. 14

    为什么在Objective-C的函数定义中使用(__weak类)?

  15. 15

    设置变量时使用viewDidLoad或initWithCoder进行Objective-C iOS开发,为什么?

  16. 16

    为什么需要在Objective-C的头文件中使用“外部静态”定义常量?

  17. 17

    为什么需要在Objective-C的头文件中使用“外部静态”来定义常量?

  18. 18

    为什么我不能在子类中使用超类的属性(Objective-C)

  19. 19

    为什么循环使用“ scanf”方法在Objective-C语言中出现死圈?

  20. 20

    为什么 Objective-C 不能在受保护的函数指针中使用“self”对象?

  21. 21

    为什么没有像其他Objective-C对象那样通过指针处理Objective-C块?

  22. 22

    用函数对数组进行排序而不使用 C 中的指针是行不通的。为什么?

  23. 23

    为什么我可以不使用LINQ条件而保留参数?

  24. 24

    为什么Task对象不使用传递给它的参数?

  25. 25

    为什么std :: stack不使用模板template参数?

  26. 26

    为什么函数printk()不使用逗号分隔参数?

  27. 27

    为什么GNU扩展清理不使用任何参数

  28. 28

    为什么不使用此原始sql中的参数?

  29. 29

    为什么ArrayList.execute()不使用给定参数?

热门标签

归档