我在代碼中混合了一些ObjectiveC和C++。 (我的文件是.mm
文件而不是.m
。)什麼時候用@autoreleasepool
來包裝任何代碼塊的正當理由?不知道我在做什麼,我正在包裝任何可能包含任何非ObjectiveC變量的代碼塊,無論它是int
,char
,std::string
,還是任何非ObjectiveC變量的指針。所以,我的C++類中的每個類方法都有一個@autoreleasepool
包裝器。@autoreleasepool的正確用法
我做錯了嗎?
請注意,在前面的問題中,有些涉及到這個問題,他們討論了使用alloc,init和release,而現在這些在XCode7 +中似乎不再使用。所以,我需要最新的建議,而不是老的建議。我需要關於XCode7或更高版本的建議。
您不必在@ autoreleasepool中包裝您的調用 - 每個線程都會自動創建一個。如果你在一個不是主線程的線程上,你可能需要創建一個autoreleasepool。 – nielsbot
在任何情況下,如果嘗試在沒有自動釋放池的情況下自動釋放對象,則會在控制檯中獲得打印的警告 – nielsbot
爲什麼在創建控制檯應用程序時,默認情況下會添加@autoreleasepool塊它創建的main.m,然後呢? – Volomike