当前位置: 首页 > 知识库问答 >
问题:

ARC错误:无法捕获块中__autoreleasing变量

相云
2023-03-14

我试图将一个旧的非ARC项目转换为ARC,我得到了这个编译错误:“无法捕获块中__autoreleasing变量”

- (void)animateViewController:(__autoreleasing animatingViewController *)viewController 
{
   //[[viewController retain] autorelease]; // I replaced this with __autoreleasing

        [UIView animateWithDuration:0.14 animations:^{
            [[viewController view] setAlpha:0.0];
        } completion:^(BOOL finished) {
            [viewController.view removeFromSuperView];
        }];
}

共有3个答案

燕青青
2023-03-14

通过为单个文件添加-fno objc ARC编译器标志,可以禁用这些文件的ARC。

在目标中添加编译器标志-

姜飞飙
2023-03-14

_自动释放几乎从未使用过<代码>\uu自动删除主要只在“指向\uu自动删除的指针”中重要,即id\uu自动删除*,或NSString*\uu自动删除*。在这种情况下,它不同于“指向\uu strong”的指针,即id*

在你的例子中,你有一个uu自动释放局部变量。这对\uuu strong没有好处(如果你不加任何限定符,它隐含着\uu strong),事实上更糟<代码>\uuu strong将根据需要正确保留和释放;如果没有必要,不需要使用自动释放。

夏俊杰
2023-03-14

由于块捕获并保留了viewController参数,因此无需保留自动释放对象。生命周期将延长,直到动画完成,因为完成块将保留控制器。

只需删除\u自动删除说明符。

如果在另一个场景中,您真的必须保留-自动释放一个实例,您可以将它分配给一个id__autoreleasing__attribute__((未使用))局部变量。但是这应该是一个非常罕见的情况,可能是您设计中缺陷的标志。

 类似资料:
  • 问题内容: 我是AngularJS的新手,并且通过一些文档和教程来学习。我的问题是参考Egghead的视频系列,尤其是该视频,该视频演示了如何组合基本的搜索过滤器。我想在一个真正的应用中使用此应用,我正在为一家从事蜡烛业务的小朋友打造,但是当我将其修改为她的蜡烛而不是复仇者联盟的演员(如视频中的演示)时,出现此错误: 未捕获的错误:[$ injector:modulerr]由于以下原因,无法实例化

  • 在任何地方都找不到关于这个的文章。我基本上希望从程序中捕获“找不到模块”错误,并可以选择要求安装它,但即使使用try/catch语句,我似乎也无法捕获任何错误。这可能吗?我哪儿都没见过。 例如: 我想这可以通过一个独立的.js启动文件来完成,而无需任何第三方的要求,只需使用检查,然后从子进程运行,然后与另一个子进程一起运行。但感觉在单个app.js文件中执行此操作会更容易

  • 问题内容: 从数据库取回数据时遇到问题。我正在尽力解释这个问题。 1.如果在下面的代码中保留“ mode”:“ no- cors”,则可以使用Postman从服务器获取数据,而不能使用自己的服务器获取数据。认为这一定是我的客户端错误 当我删除“ mode”:“ no-cors”时,我得到2个错误:-Fetch API无法加载http:// localhost:3000 /。飞行前响应中的Acces

  • 本文向大家介绍React中在哪捕获错误?相关面试题,主要包含被问及React中在哪捕获错误?时的应答技巧和注意事项,需要的朋友参考一下 在react 15 极其以前的版本中,组件内的UI异常将中断组件内部状态,导致下一次渲染时触发隐藏异常。React并未提供友好的异常捕获和处理方式,一旦发生异常,应用将不能很好的运行。而React 16版本有所改进。 组件内异常,也就是异常边界组件能够捕获的异常,

  • 问题内容: 有没有办法捕获in 中发生的错误并可能将其标记为页面中的错误? 举个简单的例子,假设我试图在一个不存在的HTML控件上绑定一个事件,我的浏览器抛出一个错误: 现在,如果我希望相同的错误无法通过我的selenium测试,并且浏览器上显示的消息将显示为错误消息。 可以做这样的事情吗? 问题答案: 将此脚本放在页面上,然后在Selenium中检查JSError:

  • 我正在使用power shell控制台运行以下power外壳脚本: 这将打印错误。然后继续并打印“创建的新对象”和“结束”。所以我假设这是一个非终结性错误。 但是,如果我将try catch块放在新对象周围,如下所示: 在这种情况下,捕获块被击中并写入异常消息。 我的问题是: < li >这是一个非终止错误吗?这看起来像是一个非终止性错误,因为在错误之后继续执行(当没有try catch块时)。