標準的Xcode 5個OpenGLES模板實例創建包括以下內容的應用程序作爲所述着色器加載代碼的一部分:澄清蘋果樣品中ARC代碼
const GLchar *source;
source = (GLchar *)[[NSString stringWithContentsOfFile:file encoding:NSUTF8StringEncoding error:nil] UTF8String]; // load file
...
glShaderSource(*shader, 1, &source, NULL);
通過Clang LLVM ARC涉水後,我會預期的NSString從文件內容創建的對象「在包含它的完整表達式的末尾釋放」。 然而,然後UTF8字符串方法在NSString.h
爲聲明:
- (__strong const char *)UTF8String;
這是否意味着ARC是足夠聰明弄清楚,NSString的對象應該被保留,直到source
超出範圍?或者我偏離軌道?
唉謝謝!以下是我錯過的一點:「重要的是要注意的是(同樣,按照慣例)所有對象創建類方法都會返回一個自動釋放對象。」 http://stackoverflow.com/questions/6578/ – bw1024