我有一个具有两个属性的类:
@interface Contact : NSObject {
NSString *lastname;
NSString *lastNameUpper;
}
我已经将 lastname 声明为一个属性(并在 .m 文件中合成它):
@property (nonatomic, retain) NSString *lastname;
但是,我想编写自己的方法来访问 lastNameUpper,所以我声明了一个方法:
- (NSString *) lastNameUpper;
并像这样实现它:
- (NSString *) lastNameUpper {
if (!lastNameUpper) {
lastNameUpper = [lastname uppercaseString];
}
return lastNameUpper;
}
这可以正常工作,但是由于它经常被调用,所以会调用很多临时对象。有趣的是,Instruments 显示很多“Malloc (4k)”,每次lastNameUpper
访问次数都增加。我还可以看到内存分配在objc_retailAutoreleaseReturnValue
.
由于在我将项目转换为 ARC 之前这工作正常,我假设我必须对方法签名进行一些 ARC 特定的添加,但我似乎无法使其工作。
有什么建议么?