Big*_*her 0 cocoa memory-management objective-c nsstring nsmutablestring
我正在Objective-C中编写一个方法,它返回一个基于NSMutableArray输入的字符串.我不打算让调用者修改字符串,但也不小心.该方法的当前签名读作:
- (NSMutableString *) generateString:(NSMutableArray *)myArray
Run Code Online (Sandbox Code Playgroud)
该项目目前是一个命令行基础工具,以学习绳索,但这最终将最终在iPhone应用程序中.
我的问题是:
2)当我返回NSMutableString时,我应该使用autorelease吗?如果你建议我返回一个NSString,它如何修改返回它?
3)如果我还想返回一个错误对象来识别是否发生了错误,可能是一个枚举和一个字符串,在这种情况下所有权是如何工作的?该方法不称为alloc,new或copy,所以调用者如何知道?除了上面方法中的字符串之外,我如何返回分配的错误对象?
谢谢!
NSString在大多数情况下,我会回来.它的内存占用量略小,如果调用者需要一个可变副本,那么创建一个只是一种方法:mutableCopy.NSString或NSMutableString你的方法返回(至少如果你喜欢的名字在本例中的方法)!" 内存管理编程指南"列出了必须遵循的规则,以避免完全混乱并深入解释所有内容.所以看吧!Foundation框架使用NSError该类来描述错误.要"返回"其他参数,您的方法将如下所示:
- (NSString *)generateString:(NSMutableArray *)myArray error:(NSError **)error
{
BOOL failed;
// Do some fancy stuff, if the operation fails, failed is true
if (failed == YES) {
if (error != NULL) {
*error = [NSError errorWithDomain:@"your_domain" code:123 userInfo:nil];
}
return nil;
}
return [yourString autorelease];
}
// ...
// Calling your method
NSError *error = nil;
[someObject generateString:someArray error:&error];
Run Code Online (Sandbox Code Playgroud)注意这两个**并且任何NSErrorvar可能是NULL和不是nil(所以你应该在方法的主体中检查它).
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |