• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 当设备未连接时,Xcode 在 bool 上编译错误

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:49:21 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试使用这个片段来做一个简单的动画:

[UIView animateWithDuration:2.0
                      delay:0.0
                    options: UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                    [self.view setAlpha:0.7f];

                 }
                 completion:^(BOOL finished){
                     if(finished)  NSLog(@"Finished !!!!!");
                     // do any stuff here if you want
                 }];

但是 XCode 给我一个错误说明:

"Incompatibile block pointer types sending 'void(^)(uint_8t)' to parameter of type 'void(^)(BOOL)'".

如果我尝试将“BOOL”更改为“bool”,则代码在 iPad Air 上编译时可以正常工作,但是当我断开 iPad 并尝试模拟器时,我会收到相同的错误,但类型不同:

"Incompatibile block pointer types sending 'void(^)(bool)' to parameter of type 'void(^)(BOOL)'".

在我看来这很奇怪,因为它是一个似乎适用于许多人的代码片段,并且是一段相当标准的代码。什么可能导致这种行为?

附:我还在 - (void)viewWillDisappearbool)animated 方法中收到不兼容类型的警告。当我连接 iPad 时它们也会消失,并在断开连接时再次出现。

编辑:---- 这段代码甚至会导致错误:

[searchArray enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop)
     {
         address = addresses[key];
         if(address) *stop = YES;
     } ];

也在 BOOL 字段上。并且错误是相同的,相互冲突的参数类型。



Best Answer-推荐答案


BOOL 是一种不同的类型,具体取决于您编译为 32 位还是 64 位。使用了不同的类型,例如 Bool、bool、Boolean 以及可能还有其他类型 - 确保在任何地方都使用相同的类型。

插入您的设备意味着将为您的设备而非模拟器编译代码,因此这可能会在 32 位和 64 位之间切换并触发问题。

我还会检查代码中某处是否存在 typedef 或 #define for BOOL。双击代码中的 BOOL,右键单击并“显示定义”。

关于ios - 当设备未连接时,Xcode 在 bool 上编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31337209/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap