Calling selectors with parameters 调用带参数的选择器

你应该已经学会了如何从一个方法里面返回字典,它和在 Swift 里返回元组是差不多的。

那还有一件你需要知道的事情就是,你可以用同样的方法去使用选择器,我们看一看之前使用 performSelector 的例子:

[person performSelector:@selector(printGreeting)];

这段代码它的意思是,找到这个叫做 printGreeting 的方法,然后运行它。

在这个方法没有参数的时候,这行代码运行起来完全没有问题。但是如果有参数了会怎么样呢?也就是说,当我们把方法写成这样的时候:

- (void)printGreeting:(NSString*)greeting;

我们就要这样来调用我们的方法了:

[person performSelector:@selector(printGreeting:)
withObject:@"Taylor"];

我们要在 printGreeting 后面加一个冒号,来告诉我们的选择器,后面有要用到的参数。

那我们之前的 printGreetingTo:atTimeOfDay: 方法,带上参数之后是这么写的,你要在参数前面加上 withObject:

- (void)printGreetingTo:(NSString*)name atTimeOfDay:(NSString*)time;

当我们要用选择器来调用它的时候,就要写成这个样子:

- (void)printGreetingTo:(NSString*)name atTimeOfDay:(NSString*)time;

我们来想象一下,假设有一个方法,它有五个参数!你真的想要写 withObject 写五遍吗?(¯﹃¯)

真的没有人想要这样子写代码的……

好在 Objective-C 没有这样的方法……

那万一万一,真的有这种情况,你可以把你的参数打包在一个字典里面,然后把这个字典传进方法来用。

results matching ""

    No results matching ""