2012-07-08 43 views
0

我在Github上发现了这个,但我不知道这段代码在做什么。任何人都可以解释吗?解释这个特定方法声明的语法

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

尤其这是什么(void (^)的事情,在到底是怎么使用的...

回答

1

(void (^)(NSUInteger buttonIndex))block,作为标签和参数名称指示,是一个Block,它是可运行代码块,这也是一个第一类对象。

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

1

空隙(^)(NSUInteger buttonIndex)是一个块,这些在整个Cocoa框架使用,我会强烈建议的三个点处的结束望着苹果的入门指南:http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxGettingStarted.html

方法名称表示该方法采用任何数量的前一类型的参数,在这种情况下为NSString。这是相同的如printf中C.参见http://en.wikipedia.org/wiki/Variadic_function#Variadic_functions_in_C.2C_Objective-C.2C_C.2B.2B.2C_and_D