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);
}
});
}
在 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);
}
});
}