'autorelease' is unavailable: not available in automatic reference counting mode - iOS

今天调试工程的时候编译程序 GTMBase64 这个类遇到了 ARC 的异常;

大致意思为当前为 ARC 环境, 属于自动引用计数,编译器会自动帮你优化管理释放内存的操作,故此处不能使用 autorelease 进行手动添加.


异常:

/Users/survivors/Desktop/iOS/***/Expand/ToolClass/GTMBase64/GTMBase64.m:288:69: 'autorelease' is unavailable: not available in automatic reference counting mode


'autorelease' is unavailable: not available in automatic reference counting mode - iOS_第1张图片



解决:

办法一:

    手动将类中的 autorelease 关键字删除掉即可.

    result = [[[NSString alloc] initWithData:converted

                                    encoding:NSASCIIStringEncoding] autorelease];

                                                    ↓↓↓

    result = [[NSString alloc] initWithData:converted

                                    encoding:NSASCIIStringEncoding];

办法二:

在 targets -> build phases 中的 compile sources 项中修改对应类的 compiler flags 属性;

将其属性中添加 -fno-objc-arc 即可;

如此一来可以让该类兼容当前 ARC 环境编译条件,从而顺利编译通过.

步骤如下图:

'autorelease' is unavailable: not available in automatic reference counting mode - iOS_第2张图片



注:若项目使用了 ARC,代码中无需再使用 autorelease 关键字.

你可能感兴趣的:('autorelease' is unavailable: not available in automatic reference counting mode - iOS)