Making ARC and non-ARC files play nice together
From Codeography
If you want to exclude a file from being compiled with ARC you can do so by setting a flag on the .m file:
Click the Project -> Build Phases Tab -> Compile Sources Section -> Double Click on the file name
Then add -fno-objc-arc to the popup window.
Likewise, if you want to include a file in ARC, you can use the -fobjc-arc flag.

See the clang docs for more details.
A helpful trick is to use the __has_feature language extension to throw errors when this is not set properly.
Enforce a file is ARC:
#if ! __has_feature(objc_arc)
#error This file must be compiled with ARC. Either turn on ARC for the project or use -fobjc-arc flag
#endif
The inverse:
#if __has_feature(objc_arc)
#error This file cannot be compiled with ARC. Either turn off ARC for the project or use -fno-objc-arc flag
#endif
This was adapted from a post by Greg Parker on the on the Objective-C mailing list. He goes on to point out the following:
You should be careful with the interface to your shared code such that ARC and non-ARC clients can use it freely. * Conform to Cocoa's memory management conventions even though an all-ARC or no-ARC project would not require it * Don't use object pointers inside C structs * Avoid CF types
Making ARC and non-ARC files play nice together的更多相关文章
- 【原】iOS学习之ARC和非ARC文件混编
在编程过程中,我们会用到很多各种各样的他人封装的第三方代码,但是有很多第三方都是在非ARC情况下运行的,当你使用第三方编译时出现和下图类似的错误,就说明该第三方是非ARC的,需要进行一些配置.
- ARC和非ARC文件混编
在编程过程中,我们会用到很多各种各样的他人封装的第三方代码,但是有很多第三方都是在非ARC情况下运行的,当你使用第三方编译时出现和下图类似的错误,就说明该第三方是非ARC的,需要进行一些配置. 解决方 ...
- ARC 与非 ARC 之间那些的'祸害'
你是否也曾被 assign.retain.copy.release.autorelease.strong.__strong.weak.__weak.__unsafe__unretain.__autor ...
- 单例模式ARC和非ARC
ARC环境下的单例模式: static id _instance = nil; + (id)allocWithZone:(struct _NSZone *)zone { if (_instance = ...
- 1.ARC和非ARC文件共存
1.ARC和非ARC文件共存 项目->Build Parses->对应的类 1.1.新项目兼容老的非ARC:-fno-objc-arc 1.2.老项目兼容ARC:-fobjc-arc
- ARC指南2 - ARC的开启和禁止
要想将非ARC的代码转换为ARC的代码,大概有2种方式: 1.使用Xcode的自动转换工具 2.手动设置某些文件支持ARC 一.Xcode的自动转换工具 Xcode带了一个自动转换工具,可以将旧的源代 ...
- ios工程中ARC与非ARC的混合
ARC与非ARC在一个项目中同时使用, 1,选择项目中的Targets,选中你所要操作的Target,2,选Build Phases,在其中Complie Sources中选择需要ARC的文件双击,并 ...
- iOS: ARC和非ARC下使用Block属性的问题
1. Block的声明和线程安全 Block属性的声明,首先需要用copy修饰符,因为只有copy后的Block才会在堆中,栈中的Block的生命周期是和栈绑定的,可以参考之前的文章(iOS: 非AR ...
- ARC简介以及工程中ARC与非ARC的混合
Piosa 博客园 博问 闪存 首页 新随笔 联系 管理 订阅 随笔- 79 文章- 0 评论- 13 ARC简介以及工程中ARC与非ARC的混合 ARC与非ARC在一个项目中同时使用, ...
- (转)iOS 开发,工程中混合使用 ARC 和非ARC
[前提知识] ARC:Automatic Reference Counting,自动引用计数 在开发 iOS 3 以及之前的版本的项目时我们要自己负责使用引用计数来管理内存,比如要手动 retain. ...
随机推荐
- js判断浏览器内核和版本(包括手机端设备)
var X, xue;xue = xue || function(expr, fn) { return xue.dom ? xue.dom(expr, fn) : {};};X = xue;wi ...
- Lintcode:Longest Common Subsequence 解题报告
Longest Common Subsequence 原题链接:http://lintcode.com/zh-cn/problem/longest-common-subsequence/ Given ...
- Lintcode: Longest Common Substring 解题报告
Longest Common Substring 原题链接: http://lintcode.com/zh-cn/problem/longest-common-substring/# Given tw ...
- spring filter 配置
web xml <filter> <filter-name>DelegatingFilterProxy</filter-name> <filter ...
- django HttpResponse对象
HttpResponse对象 概述: 作用:给浏览器返回数据 HttpRequest对象是由Django创建的,HttpResponse对象是由程序员创建 用法: 不用模板,直接返回数据 语句示例:r ...
- java工具类POI导出word
1.新建一个word,里面填写内容,如: 2.导出wordjava类 /** * POI导出word测试 * @throws Exception */ @RequestMapping(value=&q ...
- Adventures in Functions
速度还行,两天看完一章,就是有细节没去扣.书上的大部分知识点和代码都看了,这个还是可以的. 今天继续来学习函数的高级特性,要涉及到以下的主题. 内联函数(inline function) 引用变量(r ...
- hbase 学习(十五)缓存机制以及可以利用SSD作为存储的BucketCache
下面介绍Hbase的缓存机制: a.HBase在读取时,会以Block为单位进行cache,用来提升读的性能 b.Block可以分类为DataBlock(默认大小64K,存储KV).BloomBloc ...
- python里面有人写while 循环用 用while 1 和while True的区别
由于Python2中,True/False不是关键字,因此我们可以对其进行任意的赋值,这就导致程序在每次循环时都需要对True/False的值进行检查:而对于1,则被程序进行了优化,而后不会再进行检查 ...
- Python - 连接msql数据库
可能出现的异常:python中出现SyntaxError: Non-UTF-8 code 解决方法 刚开始一直有用idle写代码,今天用了一下PyDev结果发现中文不支持,在网上搜了一下,结果发现解决 ...