ios工程中使用ARC技術

2021-06-07 05:01:42 字數 1348 閱讀 5044

自動計數(arc)是乙個編譯期間工作的能夠幫你管理記憶體的技術,通過它,程式人員可以不需要在記憶體的retain,釋放等方面花費精力。

arc在編譯期間為每個objective-c指標變數新增合適的retain, release, autorelease等函式,儲存每個變數的生存週期控制在合理的範圍內,以期實現**上的自動記憶體管理。

ios4版本及以上才能支援arc。

使用arc需要注意以下幾點:

1.  禁止使用dealloc,retain,release,retaincount,autorelease。禁止任何形式呼叫和實現(dealloc可能會被實現),包括使用@selector(retain),@selector(release)等的隱含呼叫。

你可能會實現乙個和記憶體管理沒有關係的dealloc,譬如只是為了呼叫[systemclassinstance setdelegate:nil],但是請不要呼叫[super dealloc],因為編譯器會自動處理這些事情。

2.不能在c語言中的結構中使用objective-c中的類的指標。

3.不能使用nsautoreleasepool

4.不能使用memory zones.  nszone不再需要—本來這個類已經被現代objective-c廢棄。

5.禁止以new開頭的屬性變數命名。

屬性變數修飾符

weak和strong兩個修飾符是新引進的,使用例子如下:

// 下面的作用和: @property(retain) myclass *myobject;相同

@property(strong) myclass *myobject;

// 下面的作用和"@property(assign) myclass *myobject;"相識

// 不同的地方在於,如果myclass的例項析構後,這個屬性變數的值變成nil,而不是乙個野指標,

@property(weak) myclass *myobject;
使用arc技術,可以使得在棧上分配的指標隱式的初始化為nil,比如

- (void)mymethod

上面的**會log出來乙個null,不會象不使用arc技術的時候使得程式崩潰

IOS 在ARC專案中使用非ARC框架或者類庫

1.在arc專案中使用非arc框架或者類庫 ios 4引入了automatic reference count arc 編譯器可以在編譯時對obj c物件進行記憶體管理。之前,obj c的記憶體管理方式稱作引用計數,就是obj c物件每被 使用 一次,引用計數 1,當引用計數為0時,系統會 記憶體....

IOS混合使用ARC

在專案開發過程中我們通常會用到第三方提供的源 麻煩的是有些開源專案用的是 arc,有的用的是非 arc。我在使用 svprogresshud 做等待檢視時遇到問題,最終發現該專案使用的是 arc 模式,而我的工程使用的是非 arc 模式。解決方法是這樣的 xcode 專案中我們可以使用 arc 和非...

如何在 iOS 工程中使用 OpenCV?

opencv 是乙個開源的跨平台計算機視覺和機器學習庫,通俗點的說,就是他給計算機提供了一雙眼睛,一雙可以從中獲取資訊的眼鏡,從而完 臉識別 去紅眼 追蹤移動物體等等的影象相關的功能。更多具體的說明可參見 opencv 官網。import或者直接在 pch 檔案中新增 ifdef cplusplus...