私は2つのプロパティを持つクラスを持っています:
@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 固有の追加をいくつか行う必要があると想定していますが、機能させることができないようです。
助言がありますか?