1. 程式人生 > >ios中 -fobjc-arc 和 -fno-objc-arc 的使用

ios中 -fobjc-arc 和 -fno-objc-arc 的使用

在非ARC工程中整合ARC程式碼: 
使用-fobjc-arc來標記那些通過ARC編譯的第三方原始碼。 

在ARC工程中整合非ARC的第三方程式碼,編譯庫裡面的檔案需要使用-fno-objc-arc  

常見錯誤: 
--Cast of an indirect pointer to an Objective-C pointer to ‘CFTypeRef ’ (aka ‘const void *‘) is disallowed with ARC

ARC 簡介。

ARC 是編譯器特性,而不是IOS執行時特性,它也不類似於其他語言的垃圾收集器(GC)

/** ARC 是編譯器特性,而不是IOS執行時特性,它也不類似於其他語言的垃圾收集器(GC)



 1)ARC的規則:只要還有一個變數指向物件,物件就會保持在記憶體中-- 預設所有的例項變數和區域性變數都是strong指標,因為它們能保持物件的生命。


 2)OC中有強參照strong和弱參照weak。--weak型的指標變數仍然可以指向一個物件,但不屬於這個物件的擁有者;weak指標主要用於父子關係,即父親擁有一個兒子的strong指標,兒子需使用weak指標指向父親。



 典型的例子:



 你的ViewControl通過strong指標(self.view)擁有一個UITableView,UITableView的dataSource和delegate都是weak指標,指向你的viewControl



 @property(null_resettable, nonatomic,strong) UIView *view;


 @property (nonatomic, weak, nullable) id <UITableViewDelegate> delegate;





 3)在ARC(程式碼的一種靜態分析工具)中dealloc 主要用於除錯,判斷物件被釋放。可以用來管理一些資源,



 *** an implementation of dealloc, do not invoke the superclass’s implementation 不能呼叫[super dealloc]



 *** 在ARC下父類的dealloc同樣由編譯器自動完成,不能用來釋放例項變數;


 4)在ARC中考慮的是物件之間的關聯,也就是那個物件擁有哪個物件。--無論何時你建立一個物件時,都要考慮誰該擁有它,以及這個物件需要存活多久



 5)ARC只能工作於OC。



 如果應用了core foundation,malloc()、free(),此時還是需要你來手動管理
 即CF資料型別在ARC、MRC中都需要手動釋放。


 */
原文連結http://blog.csdn.net/z929118967/article/details/74332012

相關推薦

ios的奇怪崩潰SignalEXC_BAD_ACCESS錯誤分析

奔潰 ges bad strong 分享圖片 bject 文章 原子 exc 什麽是Signal 在計算機科學中,信號(英語:Signals)是Unix、類Unix以及其他POSIX兼容的操作系統中進程間通訊的一種有限制的方式。它是一種異步的通知機制,用來提醒進程一個事

iOS的事件的產生傳遞

事件 container 步驟 -s 重難點 format 希望 接受 這也 每一次將代碼打散再串聯就是一次重構。 https://www.jianshu.com/p/2e074db792ba iOS中的事件的產生和傳遞 3.1.事件的產生 發生觸摸事件後,系

iOS的屬性傳值委託模式

    iOS中常用的傳值模式有很多中,然而我們在學習階段用的比較多的傳值方式,就是屬性傳值以及委託協議傳值,或者通知方式的傳值模式,但是,我這裡主要根據自己在學習過程中學習理解到的兩種常用傳值模式。    一是,屬性傳值模式,我簡單的根據自己在

iOS的delegate的用法規範

delegate是Objective-C編寫的應用中各種物件之間互相呼叫的主要方式之一. 通常情況下, 物件可以接收的訊息都通過在介面檔案中宣告的方法來表示. @protocol MyProtocol <NSObject> - (void)func; @en

一步一步教你理解實現iOS的鏈式程式設計函數語言程式設計

談到鏈式程式設計和函數語言程式設計,那Masonry幾乎就是最經典的代表.如: make.top.equalTo(self.view).offset(60) 像這樣top.equalTo(s

iOSconst與static區別聯絡

const就是隻讀的意思,只在宣告中使用; static一般有2個作用,規定作用域和儲存方式.對於區域性變數,static規定其為靜態儲存方式,每次呼叫的初始值為上一次呼叫的值,呼叫結束後儲存空間不釋放; 對於全域性變數,如果以檔案劃分作用域的話,此變數只在當前檔案可見;對

iOS--------如何在ios運用core animation暫停繼續動畫

核心程式碼如下 //暫停layer上面的動畫 - (void)pauseLayer:(CALayer*)layer { CFTimeInterval pausedTime = [laye

ios fobjcarc fnoobjcarc 的使用

在非ARC工程中整合ARC程式碼:  使用-fobjc-arc來標記那些通過ARC編譯的第三方原始碼。  在ARC工程中整合非ARC的第三方程式碼,編譯庫裡面的檔案需要使用-fno-objc-arc   。 常見錯誤:  --Cast of an indirect p

Ruby的反射(Reflection) 操作成員變數私有方法(完)

上一篇文章我們說到了Ruby中的反射(Reflection)-通過類名稱構造類物件。 使用過Java反射的同學們都知道,有了物件之後,操作成員變數和私有方法也就不在話下了。 Ruby中也是一樣。 先看操作成員變數的例子。我們嘗試更改一個成員變數的值。(接著上一片文章的程式碼) #manpulate

C語言的關鍵字typedef之理解使用

20170726 --iRonMan C語言允許使用者使用typedef關鍵字來定義自己習慣的資料型別名稱,來替代系統預設的基本型別名稱。

MFC的圖象儲存關於相容DCCMetaFileDc的用法

CPtrArray類物件中,然後在OnDraw函式中取出相關資訊繪圖。2、使用相容DC:先將當前圖象貼到一個記憶體CBitmap物件塊中,然後再用相容DC將其SelectObject,OnDraw函式中在拷貝相容DC的內容到當前的繪圖DC中完成重繪操作。//儲存當前點陣圖的操作        m_dcCmp.

Python3學習筆記字符串字符串操作

isl int 字符串操作 博客 mys 索引 很多 map format 字符串,可以存任意類型的字符串,比如名字,一句話等等 name = ‘Sriba‘ msg = ‘Welcome to my blog.‘ 字符串還有很多內置的方法,對字符串進行操作,常用的

MM關於STO步驟配置

一、業務過程 1. Create Stock transport Order - ME21N 2. Fast Display Purchase Orders - VL10B 3. Change Delivery, Picking and Post Goods Issue - VL02N 4.

網路分流器TCP報文重組會話規則網路分流器

戎騰網路網路分流器又名核心網採集器,又分為固網採集器和移動信令採集器兩大類!網路分流器是整個網路安全前端網路監控的重要基礎裝備! 我們在網路安全當中經常聽到旁路,映象,流量採集,DPI深度資料包檢測,五元組過濾等相關詞彙,今天網路分流器為大家講講TCP報文重組和會話規則! 網路分流器高密度兼顧10G和100

網絡分流器TCP報文重組會話規則網絡分流器

判斷 連接 方向 能夠 tcp 可靠傳輸 長度 概念 數據傳輸 戎騰網絡網絡分流器又名核心網采集器,又分為固網采集器和移動信令采集器兩大類!網絡分流器是整個網絡安全前端網絡監控的重要基礎裝備! 我們在網絡安全當中經常聽到旁路,鏡像,流量采集,DPI深度數據包檢測,五元組過濾

文字內容分析智慧反饋(2) 資料預處理按緯度統計

書接上文,考慮4個核心功能的實現,先考慮:資料預處理和按緯度統計。 1、資料預處理 1.1、基本原則 首先,考慮資料的格式。 業務資料是儲存在關係型資料庫中的。資料分析的部分,我們將使用Weka,雖然Weka習慣ARFF格式,為了實現資料分析和提取的

訊息中介軟體系列JMS基本概念模型

一、定義: JMS 全稱:Java Message Service,Java訊息服務,是Java EE中的一個技術,它定義了Java 中訪問訊息中介軟體的介面,並沒有給予實現,實現JMS介面的訊息中介軟體成為JMS Provider,例如:Active MQ 二、訊息模型

python datetimetime的常見操作持續更新

#獲取當前時間戳(精確到納秒)time.time()  1523328684.473207#時間轉換為字串time.strftime(format,dt) dt為具體時間,datetime和date格

iOSarc的設定與使用-fobjc-arc或者-fno-objc-arc

目中以前的一個複雜的想shi的類,今天leak測試的時候,發現收到記憶體警告,索性直接改為arc了 (arc是iOS 5推出的新功能,那些概念性的話就不多說了). 發個小帖,僅供新手看~ 舊工程配置arc方案: 1,直接在targets->build phases中修改compiler F

UML基本架構建模類的術語概念

Terms and Concepts 術語和概念 A classis a description of a set of objects that share the same attributes, operations, relationships, and semantics. Graphical