0

AddressBook から Notes を取得するコードを次に示します。

 +(NSString*)getNote:(ABRecordRef)record {

  return ABRecordCopyValue(record, kABPersonNoteProperty);
}

しかし、上記の実装ではメモリリークがあります。メモリリークを取り除くために、次のコードを書きました

    +(NSString*)getNote:(ABRecordRef)record {

    NSString *tempNotes = (NSString*)ABRecordCopyValue(record, kABPersonNoteProperty);
    NSString *notes = [NSString stringWithString:tempNotes];
    [tempNotes release];
    return notes;

}

上記のコードを書くと、アプリがクラッシュします。何がうまくいかないのですか?ありがとう。

更新: このメソッドを次のように呼び出します。

notes = [AddreesBook getNote:record];

notes は私のivarで、deallocメソッドで解放しています。

4

2 に答える 2

0

パラメータが正しく設定されていると仮定するとrecord、以下は自動解放された NSString を返すはずです。

+ (NSString *)getNote:(ABRecordRef)record {
    return [(NSString *)ABRecordCopyValue(record, kABPersonNoteProperty) autorelease];
}

ただし、現在のバージョンのgetNoteが動作しない理由はわかりません。

于 2012-04-09T14:52:20.287 に答える