Objective-C: 这个代码是什么意思?

Objective-C: What does this code mean?

在 MyViewController.h 文件中:

@property (nonatomic, copy, nullable, class) void (^saveMetadataSuccess)(MyViewController*const _Nullable myViewController);

在 MyViewController.m 文件中:

void (^saveMetadataSuccess)(MyViewControllerr* const myViewController) = nil;

+ (void)setSaveMetadataSuccess:(void (^)(MyViewController* const))newMetadataSaveSuccess {
    saveMetadataSuccess = [newMetadataSaveSuccess copy];
}

+ (void (^)(MyViewController* const))saveMetadataSuccess {
    return saveMetadataSuccess;
}

最后是我不明白的方法:

- (void)success {
dispatch_async(dispatch_get_main_queue(), ^{
        MyViewController.saveMetadataSuccess(self);
    });
}

据我了解,saveMetadataSuccess是一个getter,但MyViewController.saveMetadataSuccess(self);似乎设置了一些东西。

谁能赐教一下?

谢谢

MyViewController.saveMetadataSuccess 是一个 getter 并且它 returns 一个块,然后用参数 (self) 调用。

所以它就像一个函数 returns 其他函数。

此外,您不能只调用 MyViewController.saveMetadataSuccess(self);,因为 MyViewController.saveMetadataSuccess 可以为 null,如果 MyViewController.saveMetadataSuccess 为 null,它将崩溃。

你必须先检查MyViewController.saveMetadataSuccess:

- (void)success {
dispatch_async(dispatch_get_main_queue(), ^{
        if (MyViewController.saveMetadataSuccess) {
            MyViewController.saveMetadataSuccess(self);
        }
    });

}