亲爱的iPhone开发者, 我有一个实例方法,意味着返回一个字符串
- (NSString *)newFile:(NSString *)inFile andFileNumber:(NSInteger)aNumber {
return [NSString stringWithFormat:@"%@.o%i",inFile,aNumber];
}
我将此方法称为
outputFileName = [self newFile:inputFileName andFileNumber:newNumber];
// where inputFileName is a string and newNumber is an integer
// outputFileName (also a string), inputFileName and newNumber are declared in
// the interface and in the implementation
当我使用Analyzer编译项目时,它会提供以下消息;
此外,当它尝试释放outputFileName时,应用程序崩溃。有人知道出了什么问题吗?提前谢谢。
答案 0 :(得分:8)
问题是惯例的假设。具体来说,静态分析器假定以new
开头的任何方法都返回一个保留的对象。这是因为系统API遵循此约定。
重命名您的方法;想到fileNameWithBase:fileNumber:
。
答案 1 :(得分:1)
您的方法以“new”开头,分析器假定您希望返回具有+1保留计数的对象。更改方法的名称,警告应该消失。
另外:该方法返回一个自动释放的对象;你不应该自己释放它。
答案 2 :(得分:0)
你正在返回一个自动释放的字符串。如果您要向其发送额外的-release
或-autorelease
消息,则下次尝试访问该字符串时,您的应用会崩溃。
您应该花时间阅读Apple开发者文档的“内存管理”部分。