我想创建一个具有我需要的常用功能的实用程序类。所以它们必须是静态的,而不是泄漏记忆。
说我想添加这个将NSString转换为NSNumber的函数:
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * myNumber = [f numberFromString:@"42"];
[f release];
我怎样才能返回结果,而不是泄漏?
我是否必须使用autorelease?
答案 0 :(得分:3)
使用 autorelease 以避免在返回具有不确定所有权的对象时发生内存泄漏。 NSNumber
的{{1}}方法已经返回一个自动释放的值,因此您不需要在您的情况下执行任何特殊操作。对于其他类的对象,您可以这样做:
numberFromString:
请注意,如果您使用ARC,则无需执行任何操作:编译器非常智能,可以为您解决大部分问题。
在Objective C中,Java / C ++ / C#的静态方法称为类方法。您在声明中使用MyClass *ret = [[[MyClass alloc] initWithSomeValue:42] autorelease];
而不是+
来表示它们,并记住您无法从实现中访问实例方法。
在标题中:
-
在实施中:
@interface MyHelper : NSObject
+(NSString*)format:(NSNumber*)num;
@end