【发布时间】:2014-02-28 01:46:09
【问题描述】:
标准 Xcode 5 OpenGLES 模板示例创建一个应用程序,其中包括以下作为着色器加载代码的一部分:
const GLchar *source;
source = (GLchar *)[[NSString stringWithContentsOfFile:file encoding:NSUTF8StringEncoding error:nil] UTF8String]; // load file
...
glShaderSource(*shader, 1, &source, NULL);
经过Clang LLVM ARC 之后,我预计从文件内容创建的 NSString 对象“在包含它的完整表达式的末尾被释放”。
但是,然后在NSString.h 中将UTF8String 方法声明为:
- (__strong const char *)UTF8String;
这是否意味着 ARC 足够聪明,可以确定应该保留 NSString 对象,直到 source 超出范围?还是我偏离了轨道?
【问题讨论】:
标签: ios objective-c automatic-ref-counting clang