Xcode中 Object-C中编译ARC配置

Xcode4.2(iOS 5)以后启用了ARC(Automatic Reference Countion)技术(即内存自动管理机制)

1、需要iOS5才支持;

2、很多引用的类库暂时还不支持. 麻烦的是对大多数第三方库需要加禁用arc的编译flag,因为大多都因为兼容性还在使用手动内存管理。

虽然4.2以后版本仍然可以不开启ARC,  但是我们在建工程的时候有时为了不想管理内存然后就启用了ARC,

但是再开发过程中需要用到第三开发类库,

而这些第三方类库或是没做更新而不支持ARC,然后编译时就出现下列错误:

‘release‘ is unavailable: not available in automatic reference counting mode

ARC forbids explicit message send of ‘release‘

‘autorelease‘ is unavailable: not available in automatic reference counting mode

ARC forbids explicit message send of ‘autorelease‘

‘retain‘ is unavailable: not available in automatic reference counting mode

ARC forbids explicit message send of ‘retain‘

(1)对单个文件取消ARC的解决办法:

1.在targets->build phases中修改compiler Flags属性,添加:-fobjc-arc,就可以让旧的工程支持arc;

2.在targets->build phases中修改compiler Flags属性,添加:-fno-objc-arc,就可以让原来支持arc的工程不使用arc,对于大部分第三方类库来说都可以顺利编译通过

(2)对整个工程取消ARC的解决办法:

打开你的工程,点击目录的工程文件,最顶端蓝色的,

然后选择project下你的工程,还是蓝色那项,然后build Settings,然后往下拉,在Apple LLVM 5.0 - Language - Objective C 里有一个选项,Objective-C Automatic Reference Counting 选择NO,就可以了。

project ->

build Settings ->

Apple LLVM 5.0 - Language - Objective C ->

Objective-C Automatic Reference Counting

Xcode中 Object-C中编译ARC配置

时间: 2024-11-03 22:33:07

Xcode中 Object-C中编译ARC配置的相关文章

JAVA中Object类中的equals方法补充

Object类中的equals方法: 无论new多少个对象,当使用 "= =" 来判断的时候,是判断内存地址.判断回事false 若是需要进行对象之间的判断,则需要重写equals方法: public boolean equals(Object obj)//obj是传入的形式参数(对象) { if (obj == null)//判断对象是否为空 { return false;//空则返回false } else { if ( obj instanceof cat)//判断这个传入参数(

anysis中fluent 与 VS2015 编译 环境配置

环境:win10 64位+VS2015 32位 +ansys 16.0 配置:调到环境变量, 用户变量 include  C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include  C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt

Java中Object类中的方法

Java的Object类是所有类的顶级父类,方法如下: 1. hashCode(),返回一个hash值,两个对象的hash值不同,那么两个对象equals肯定为false.hash相同,equals不一定为true. 2. equals() 3. clone() 只有实现Cloneable接口的对象才可以调用这个方法.clone()是浅复制.如果对象里面又关联其他对象那么需要重写clone()方法才能深复制.深复制是针对引用类型而言的,基本数据类型不用考虑.序列化也可以实现深复制. 4. toS

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML 定义的 Bean 信息转换为 Spring 框架的 Bean Definition 对象的处理过程,向读者展示了 Spring 框架的奥妙之处,可以加深开发人员对 Spring 框架的理解. 0 评论: 秦 天杰, 软件工程师, IBM China 2013 年 9 月 02 日 内容 在 IBM

Hybrid App Development: 二、关于造轮子以及在Xcode iOS应用开发中加入Cordova

转载请注明出处:http://www.cnblogs.com/xdxer/p/4111552.html [ctrl+左键点击图片可以查看原图] 在上一篇关于Hybrid App Development的文章中,我讨论了一下在iOS下UIWebView的使用方法.但是光使用一个UIWebView所提供的功能还是完全不能满足我们的需求.   关于造轮子的思考: 在UIKit中的UIWebView虽然已经提供了很多功能了,比如JavaScript和Objc之间的通信.但是考虑到一个问题,如果在Hybr

eclipse中多个工程编译到同一个目录下

1.点击link source  2.选择Java(ps:Java文件目录)或者resource(ps:配置文件目录)  3.最后结果,然后使用project中的clean进行编译,就可以把两个工程编译到一个目录下面了

Tomcat中JVM内存溢出及合理配置(转)

Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机.Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍. 一.Java JVM内存介绍 JVM管理两种类型的内存,堆和非堆.按照官方的说法:"Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的.""在JVM中堆之外的内存称为非堆内存(Non-heap

VSCode中C/C++库文件的配置

之前一直在是用sublime做主要编辑器,现在主要使用VSCode,毕竟大厂制作,从目前的使用情况来看,我更喜欢使用VSCode编辑器. 有时候会用VScode来组件C/C++工程,并且用到了一些外部依赖的库文件,比如OpenCV.此时希望VSCode的代码提示功能能够提示OpenCV中的函数,这时候就需要配置工作空间中的C/C++编译环境. 如果你使用过sublime或者VSCode,就知道Ctrl+Shift+P可以调出控制窗口,那么先按下Ctrl+Shift+P: 再输入edit或者con

spring中使用parent属性来减少配置

在基于spring框架开发的项目中,如果有多个bean都是一个类的实力,如配置多个数据源时,大部分配置的属性都一样,只有少部分不一样,经常是copy上一个的定义,然后修改不一样的地方.其实spring bean定义也可以和对象一样进行继承. 示例如下:  <bean id="testBeanParent"  abstract="true"  class="com.wanzheng90.bean.TestBean">         &