objective-c - 使用 typedef 的不兼容 block 指针类型

标签 objective-c cocoa objective-c-blocks

一天以来,我一直在尝试让一段代码工作,以帮助我以一种很好的方式处理 CoreData 的查找和创建(我从这篇文章中找到了 http://emplementation.blogspot.nl/2011/12/importing-data-into-core-data-while.html )。我最终使用了以前从未做过的代码块。

我无法以某种方式修复以下错误,因为我的 typedef 中的内容与我尝试在函数中定义的内容不同。我想我知道这与在 typedef 中定义为 __strong 但在我的实现文件中有所不同的 block 有关。

错误

Incompatible block pointer types initializing '_strong objectOperationBlock' (aka 'void (^_strong)(NSManagedObjectContext *_strong, NSDictionary *_strong, NSManagedObject *_strong)') with an expression of type 'void (^)(NSManagedObject *_strong, NSDictionary *_strong, NSManagedObject *_strong)'

MyViewController.h

typedef void (^objectOperationBlock)(NSManagedObjectContext *context,
                                 NSDictionary *hostObjectData,
                                 NSManagedObject *localManagedObject);

MyViewController.m

objectOperationBlock matchedBlock = ^(NSManagedObject *context, NSDictionary *hostObjectData, NSManagedObject *localManagedObject){
    NSLog(@"Dosomething");
};

在我所有的尝试中,我发现这可以构建(但它没有使用 typedef)

void (^matchedBlock)(NSManagedObject*, NSDictionary*, NSManagedObject*) = ^(NSManagedObject *context, NSDictionary *hostObjectData, NSManagedObject *localManagedObject){
    NSLog(@"Dosomething");
};

在此先感谢您的帮助!

最佳答案

我是否错过了 typedef 应该读取:

typedef void (^objectOperationBlock)(NSManagedObject *managedObject,
                                     NSDictionary *hostObjectData,
                                     NSManagedObject *localManagedObject);

关于objective-c - 使用 typedef 的不兼容 block 指针类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10932579/

相关文章:

objective-c - Interface Builder 中可能存在错误吗?

iphone - 在我的 UIView 中每 5 分钟调用一次方法

objective-c - NSString nslog 显示 "\n"换行符

ios - 网络完成 block 、递归和 ARC 保留循环

ios - 从 swift 调用 objective-C typedef block

ios - 在 iOS 6 中弃用 viewdidUnload

cocoa - 如何使用自动布局动画 NSSplitView 折叠

objective-c - Quartz 2D 矩形中的绘图字符串,如何获得省略号?

javascript - 从 Obj C 调用 JavaScript - 没有 WebView

ios - iOS中 block (Objective-C)和闭包(Swift)之间的区别