Tag: arc

iOS: Disable Automatic Reference Counting for Some Files

Posted by – June 18, 2013

開發 iOS 所使用的 Objective-C 語言隨著 APP 生態發展,也變成一門挺熱門的語言。相對地,其發展也進步許多。

Apple 於 2011 年才在 Objective-C 中導入了 Automatic Reference Counting (ARC) 機制,做為自動記憶體管理的解決方案。在 ARC 出現之前,Obj-C 中記憶體釋放完全是由開發者操作的,對於慣用 script 語言的我來說相當的不習慣,而且也覺得很囉嗦。我偏好 PHP, Python, Ruby 這類可以寫得很簡潔,專注在我要解決的問題與需求上的語言。從 C 演化來的 Obj-C 宛如火星文一般。

所以我是很習慣在開 Xcode 專案時使用 ARC 機制的,可以不用寫 release 方便許多。我連 @synthesize 都沒在寫的。

前面扯這麼多,當然是在鋪 ARC 的梗。開發過程中常會用到第三方的 Library 或 Example code 來加速開發或完成某些外部資源串接。這些第三方的 code 有許多仍是用 non-ARC 模式開發的 (就是手動管理記憶體)。但是專案開了 ARC 模式後編譯 non-ARC code 會掛掉。

xcode-non-arc-error

解決方法是更改編譯設定。在 Xcode 點選 TARGETS -> Build Phases,在 Compile Source 可以加上編譯參數。為 non-ARC 的程式加上 -fno-objc-arc 指定不使用 ARC。

xcode-fno-objc-arc

這樣編譯可以過關了。

如果是反過來要在 non-ARC project 中指定使用 ARC 的話,參數是 -fobjc-arc

How to know if Xcode iOS project is using ARC?

Posted by – June 18, 2013

基本問題,如何查詢 Xcode 的 iOS 專案是否有使用 ARC (Automatic Reference Counting)?

在 Xcode 中點選 Target -> Build Settings -> 搜尋 automatic,就會看到 Objective-C Automatic Reference Counting 是 YES 還是 NO 了。

xcode_check_is_arc_on

iOS: FMDB with ARC Semantic Issue

Posted by – May 28, 2013

身為一個 iOS 界的菜菜子,很多元件的使用並不是很熟悉。最近有個案子需要跟 SQLite 打交道,FMDB 是一套頗受推祟的 SQLite wrapper,可以簡化 SQLite 的操作。

FMDB on Github 下載套件。解壓縮後將 src 資料夾加入 XCODE 專案就可以使用了。當然,別忘了要加 libsqlite3.dylib

不過久久沒用 FMDB,一按下 compile 就爆了.... 噴出四個 Arc Semantic Issue。

compile error

呃.... 喔,我忘了要移除 src/fmdb.m 這個檔案.... 移除掉再重新編譯就可以了。