解释此特定方法声明的语法

时间:2012-07-08 19:40:56

标签: objective-c syntax method-declaration

我在Github上发现了这个,但我不知道这段代码在做什么。有人可以解释一下吗?

- (id)initWithTitle:(NSString *)title 
            message:(NSString *)message 
    completionBlock:(void (^)(NSUInteger buttonIndex))block 
  cancelButtonTitle:(NSString *)cancelButtonTitle 
  otherButtonTitles:(NSString *)otherButtonTitles, ... {

特别是这个(void (^)是什么,最后如何使用...

2 个答案:

答案 0 :(得分:1)

void(^)(NSUInteger buttonIndex)是一个块,它们在整个Cocoa框架中使用,我强烈建议在http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxGettingStarted.html

查看Apple的入门指南

方法名称末尾的三个点表示该方法采用前一种类型的任意数量的参数,在本例中为NSString。这与C中的printf相同。请参阅http://en.wikipedia.org/wiki/Variadic_function#Variadic_functions_in_C.2C_Objective-C.2C_C.2B.2B.2C_and_D

答案 1 :(得分:1)

(void (^)(NSUInteger buttonIndex))block,如标签和参数名称所示,是Block,它是一块可运行的代码,也是一流的对象。

省略号...表示该方法采用可变数量的最终参数。此功能通常由其C库名称"varargs"所知。更正式的术语是"variadic"