今天調(diào)試工程的時(shí)候編譯程序?GTMBase64?這個(gè)類遇到了 ARC 的異常;
大致意思為當(dāng)前為 ARC 環(huán)境, 屬于自動(dòng)引用計(jì)數(shù),編譯器會(huì)自動(dòng)幫你優(yōu)化管理釋放內(nèi)存的操作,故此處不能使用 autorelease 進(jìn)行手動(dòng)添加.
異常:
/Users/survivors/Desktop/iOS/***/Expand/ToolClass/GTMBase64/GTMBase64.m:288:69: 'autorelease' is unavailable: not available in automatic reference counting mode

解決:
辦法一:
????手動(dòng)將類中的?autorelease 關(guān)鍵字刪除掉即可.
????result = [[[NSString alloc] initWithData:converted
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? encoding:NSASCIIStringEncoding] autorelease];
????????????????????????????????????????????????????↓↓↓
? ? result = [[NSString alloc] initWithData:converted
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? encoding:NSASCIIStringEncoding];
辦法二:
在 targets -> build phases 中的 compile sources 項(xiàng)中修改對(duì)應(yīng)類的 compiler flags 屬性;
將其屬性中添加?-fno-objc-arc 即可;
如此一來可以讓該類兼容當(dāng)前 ARC 環(huán)境編譯條件,從而順利編譯通過.
步驟如下圖:

注:若項(xiàng)目使用了 ARC,代碼中無需再使用?autorelease 關(guān)鍵字.