我收到错误:
Incompatible block pointer types assigning to 'void (^__strong)(NSString *__strong, NSInteger)' from 'void (^__strong)(NSString *__strong, int)'
对于此代码:
-(void)showInView:(UIView *)view withCompletionHandler:(void (^)(NSString *, int))handler{
_completionHandler = handler;
}
其中:
@property (nonatomic, strong) void(^completionHandler)(NSString *, NSInteger);
这似乎应该是一个非常非常简单的解决方案,但我不太了解它是否可以运行。
答案 0 :(得分:4)
我认为你正试图为64位目标构建它? NSInteger定义如下:
#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
因此,在为64位平台构建时,NSInteger将被long
类型替换,这会导致此错误,因为您尝试将int作为参数分配给属性期待一个需要很长时间的块。你应该使用这个:
-(void)showInView:(UIView *)view withCompletionHandler:(void (^)(NSString *, NSInteger))handler{
_completionHandler = handler;
}