回答
您可以Unmanaged<T>
值調用retain
和release
。 Unmanaged
基本上是ARC管理之外的對象指針。但是你必須轉換爲託管指針才能與Cocoa API交互。
但是,除非在特殊情況下,否則你不想這樣做。而一個沒有轉化爲ARC的項目並不是這種情況。
注意2014年8月29日 - 下面我的答案是不正確的,這是可能的,看看@newacct答案
你就是不行。閱讀更多關於Automatic Reference Counting。
你必須有一個很好的理由不想ARC
沒有真正的原因 - 只是cuirious – YogevSitton 2014-08-28 06:50:38
好的。害怕你想做一些奇怪的事情:) – Antonio 2014-08-28 06:51:54
我正在研究一個非ARC項目,我想知道如果我可以添加Swift代碼而不必將其轉換爲ARC項目。 – YogevSitton 2014-08-28 06:54:00
目前沒有辦法以objc的方式(例如,帶有編譯器標誌的每個文件)關閉ARC for swift。正如其他人指出的那樣,有一些「非託管」和「不安全的可變指針」API用於與C API交互,它允許您在某些情況下解決ARC問題。但是,這些API非常麻煩,需要對代碼進行重大更改(例如,與數組進行交互)。
Swift的人通常會希望你重寫你的代碼來使用結構並儘可能避免引用問題。但是這使得移植現有的代碼變得很痛苦。
在我的另一篇文章中有關於ARC性能的一些建議在這裏:Swift Dictionary slow even with optimizations: doing uncessary retain/release?但沒有一個是非常令人滿意的。
我已經寫了代碼來後處理編譯後的mach-O目標代碼,並從實驗中刪除了某些類的ARC swift_retain/release調用。但我真的希望現在Swift是開源的,我們可以修改它以使其在未來更加靈活。
- 1. NSURLConnection與ARC沒有收到數據
- 2. CGImageRef沒有在ARC下發布
- 3. ARC下的對象沒有被刪除
- 4. 有沒有一種方法來保持整個項目沒有ARC,同時在新項目上使用ARC
- 5. ViewController沒有segue,swift
- 6. 有沒有人成功將端口SpeakHere用於ARC?
- 7. Swift:沒有會員名字
- 8. Swift + didUpdateUserLocation沒有被調用
- 9. SWIFT值..沒有會員
- 10. NMACoreRouter calculateRouteWithStops沒有回調(swift)
- 11. Swift:標籤沒有顯示
- 12. SWIFT 3 - CGImage總是沒有
- 13. Swift inout沒有設置
- 14. Swift 3 String上沒有intValue?
- 15. Swift'沒有會員姓名'
- 16. Swift UICollectionView:didSelectItemAtIndexPath沒有響應
- 17. Swift 3:UITapGestureRecognizer沒有觸發
- 18. CAGradientLayer沒有出現(Swift 3)
- 19. MKPolygon Swift沒有出現
- 20. 我創建了一個沒有ARC的新項目,但沒有dealloc方法
- 21. swift有沒有替代UIGetScreenImage的?
- 22. 將非ARC轉換爲ARC
- 23. ARC與非ARC removeLastObject方法
- 24. XCode 4.2和ARC,爲什麼它沒有打開我?
- 25. 什麼時候可以使用沒有Arc的Mutex?
- 26. ARC語義問題 - 沒有可見的@interface
- 27. cocos2d v2.x打開arc後,cclayer沒有得到dealloc
- 28. Objective C ARC NSMutableArray - 從函數返回 - 沒有發佈?
- 29. 要ARC還是不要ARC?優缺點都有什麼?
- 30. Singleton在具有ARC和非ARC的項目中起作用?
在我的回答和@newacct答案中提出意見後,我現在想知道:你想避免在你的項目中的* some *對象上使用ARC,或者關閉整個項目的ARC?可以在你的問題中明確說明嗎? – Antonio 2014-08-29 07:38:57