iOS 开发,工程中混合使用 ARC 和非ARC

【前提知识】

ARC:Automatic Reference Counting,自动引用计数

在开发 iOS 3 以及之前的版本的项目时我们要自己负责使用引用计数来管理内存,比如要手动 retain、release、autorelease 等,而在其后的版本可以使用 ARC,让系统自己管理内存。

【问题】

在项目开发过程中我们通常会用到第三方提供的源代码,麻烦的是有些开源项目用的是 ARC,有的用的是非 ARC。

我在使用 SVProgressHUD 做等待视图时遇到问题,最终发现该项目使用的是 ARC 模式,而我的工程使用的是非 ARC 模式。

怎么办呢?

【解决方案】

Xcode 项目中我们可以使用 ARC 和非 ARC 的混合模式。

如果你的项目使用的非 ARC 模式,则为 ARC 模式的代码文件加入 -fobjc-arc 标签。

如果你的项目使用的是 ARC 模式,则为非 ARC 模式的代码文件加入 -fno-objc-arc 标签。

添加标签的方法:

  1. 打开:你的target -> Build Phases -> Compile Sources.
  2. 双击对应的 *.m 文件
  3. 在弹出窗口中输入上面提到的标签 -fobjc-arc / -fno-objc-arc
  4. 点击 done 保存

参考:

SVProgressHUD 下载

http://blog.unieagle.net/?p=484

http://stackoverflow.com/questions/6646052/how-can-i-disable-arc-for-a-single-file-in-a-project

https://github.com/samvermette/SVProgressHUD/issues/84

时间: 2024-09-17 04:15:02

iOS 开发,工程中混合使用 ARC 和非ARC的相关文章

Android开发工程中集成mob短信验证码功能的方法_Android

一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务功能,我不是打广告,的确觉得这项服务很不错.那么下面就简单讲一下如何在自己的工程里集成mob的短信功能,其实整个流程并不复杂,只是个人觉得mob的官方文档有点小乱,官方Demo也有点小复杂,同时有一些细节地方容易被忽视,也会导致一些问题. PS:太喜欢mob的logo了. 二.实现过程 本篇只涉及A

Android开发工程中集成mob短信验证码功能的方法

一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务功能,我不是打广告,的确觉得这项服务很不错.那么下面就简单讲一下如何在自己的工程里集成mob的短信功能,其实整个流程并不复杂,只是个人觉得mob的官方文档有点小乱,官方Demo也有点小复杂,同时有一些细节地方容易被忽视,也会导致一些问题. PS:太喜欢mob的logo了. 二.实现过程 本篇只涉及A

ios开发-xcode中怎么做到点击按钮从当前页面转入一个新的页面?

问题描述 xcode中怎么做到点击按钮从当前页面转入一个新的页面? 我是个初学者,只有简单的了解MVC和一些简单的api,我想知道我做一个登录界面,怎么让我点击登录之后进入下一个应用界面呢?大牛给详细的解答好吗,谢谢大神. 解决方案 从A页面跳到B页面 1.ViewControllerB *B=[[ViewControllerB alloc] init]; [self.navigationController pushViewController: B animated:true]; 2.Vie

ios 开发-AVAudioPlayer中的averagePowerForChannal:意义 ?

问题描述 AVAudioPlayer中的averagePowerForChannal:意义 ? AVAudioPlayer中的averagePowerForChannal: 和 peakPowerForChannal: 的值有什么意义? 文档中的解释是: averagePowerForChannal: Returns the average power for a given channel, in decibels, for the sound being played. 那 average

ios开发-xcode7 中怎么创建空白模板??

问题描述 xcode7 中怎么创建空白模板?? xcode7 中怎么创建空白模板或者修改出空白模板??网络上很多方法试过,但是在模拟器运行就报错~ 解决方案 看下xcode有没有安装正确 解决方案二: 创建Xcode 模板 解决方案三: window必须有一个rootViewController..

非ARC的文件在ARC项目中使用

我们在开发的过程中,有时候会用到一些第三方的简单的功能类, 这些第三方的代码开发时有可能用的是非ARC,而我们的项目用的是ARC, 没关系,我们也可以直接导入他们开发的功能类配置一下直接使用,非常简单: 1.首先将第三方的功能类导入我们的项目中 2.Target-->Targets--> Build Phases--->Complie Sources中找到导入的非ARC功能类的.m文件 3.双击功能类的.m文件,会弹出一个输入框,框中输入:-fno-objc-arc,编译运行即可. (默

如何将非ARC的项目转换成ARC项目

  如何将非ARC的项目转换成ARC项目 Xcode 自带一个自动转换的功能,不过只适合比较小的项目,在大型项目上是不适合适用的,所以大型项目上需要全手动转换. 1.将项目编译环境改成ARC 将红圈处从No 改成Yes 如果你现在的工程不支持ARC技术,你可以通过一个自动转换工具来转换你的工程(工具在 Edit>Refactor>Convertto Objective-CARC),这个工具会自动所有工程中手动管理内存的点转换成合适自动方式的(比如移除retain, release等).这个工具

奔向三张,不破不立:一个iOS开发工程师的职业规划思考

  大前天下午快下班那会儿,跟念茜聊了一下各自的工作现状,发现她现在碰到的一些职业规划上的困惑,跟我在一年多前的情况非常相似.而我经过一年多来的不断思考和调整,已经基本明确了自己的职业规划,发展的方向变得越来越清晰,配合我个人较强的执行力,困惑越来越少,事情也正在朝着越来越好的方向发展.念茜和我是iOS开发行业中的普通年轻从业人员,因此我们的困惑具有一定的代表性.今天,我就跟大家说说这两年来我的职业规划心路历程,供大家参考.   看过书上自序部分的朋友都知道,我从读硕士开始,就已经进入iOS领域

ios-IOS获取系统相册图片名称在非ARC模式下报错

问题描述 IOS获取系统相册图片名称在非ARC模式下报错 dispatch_async(dispatch_get_main_queue(), ^{ ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset){ ALAssetRepresentation *representation = [myasset defaultRepresentation]; NSString *fileName = [represen