ios - 方法调用中的插入符号

标签 ios objective-c

<分区>

我在学习本教程时遇到了这行代码,这让我很困惑:

[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {
    if (!error) {
        int i = 0;
        do {
            MKMapItem *mapItem = [response.mapItems objectAtIndex:i];
            [self.mapItems addObject:mapItem];
            i++;
        } while (i < response.mapItems.count);
        [[NSNotificationCenter defaultCenter] postNotificationName:@"Address Found" object:self];
    } else {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"Not Found" object:self];
    }
}];

我不明白的部分如下:^(MKLocalSearchResponse *response, NSError *error) {

插入符号 ^ 以及之后发生的事情是我不知道的。

我查看了一些文档,但找不到任何内容。

最佳答案

^ 表示 objective-c 中的一个 block 。它就像一个匿名函数,可以分配给一个变量或作为参数传递给一个函数,如您的示例所示。在 Apple 文档中阅读更多内容:

https://developer.apple.com/library/ios/documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.html

定义 block :

 ^{
     NSLog(@"This is a block");
}

将 block 分配给变量:

void (^simpleBlock)(void);

// or

simpleBlock = ^{
    NSLog(@"This is a block");
};

调用 block :

simpleBlock();

使用 block 作为消息的参数:

- (IBAction)fetchRemoteInformation:(id)sender {
    [self showProgressIndicator];

    XYZWebTask *task = ...

    [task beginTaskWithCallbackBlock:^{
        [self hideProgressIndicator];
    }];
}

例子取自苹果文档

关于ios - 方法调用中的插入符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20730370/

相关文章:

ios - 从 iOS 中的字节中提取整数

带有手势的 IOS8 和 Swift 多 View 不起作用

ios - 如何使用 PresentViewController 在 Storyboard中引用 ViewController

ios - 在内存结构中捕获 NSLog 输出

objective-c - 我应该如何存储对象集合并提供特定的方法来查询它们?

iphone - 部署应用程序物理 iPad 设备时出现 Mac Xcode 构建失败问题

ios - 关于修改 NSMutableArray 的内容

iOS - 如何在 AVPlayer 中实现 seektotime(从 URL 播放歌曲)?

ios - 选择 AnnotationView 两次

objective-c - objective-c 中的单例