【问题标题】:What (void(^)(NSString *)) as method parameter means in Objective-C?什么 (void(^)(NSString *)) 作为方法参数在 Objective-C 中意味着什么?
【发布时间】:2012-12-08 09:20:19
【问题描述】:

我必须使用我雇主的一些私有 API,我有这样的方法:

- (void)login:(NSString *)username password:(NSString *)password delegate:(void(^)(NSString *))delegate;

(void(^)(NSString *))delegate 是什么意思?

这是参数,但我不知道这里必须是什么。

【问题讨论】:

    标签: objective-c methods block


    【解决方案1】:

    这是一个块指针。如果您不熟悉块,这基本上可以让您将匿名函数内联分配为参数。这里的签名表示该块将 NSString 作为参数,并且不返回任何内容。你可以这样使用它:

    - (void)login:(NSString *)username password:(NSString *)password delegate:(void(^)(NSString *))delegate;
    
    [someReceiver login:yourUsername password:yourPassword delegate:^(NSString *aString)
    {
         // This is the block (annonymous function).  Do something with the aString paramter
    }];
    

    【讨论】:

      【解决方案2】:

      它表示block - 它本质上是一个闭包(lambda 函数,不管你怎么称呼它) - Apple 对 C 语言的补充。在这种情况下,它返回 void 并接受 NSString 对象作为其唯一参数。

      【讨论】:

        猜你喜欢
        • 2012-05-29
        • 2017-05-10
        • 2011-06-28
        • 1970-01-01
        • 2010-09-14
        • 1970-01-01
        • 2018-04-25
        • 2023-03-10
        相关资源
        最近更新 更多