0

私のiPhoneアプリには、NSObject次のような文字列があるという点で「連絡先」クラスがあります

@interface Contact : NSObject

@property (nonatomic, retain) NSString *name;

@implementation Contact

@synthesize name;

そして、この名前文字列を他のクラス (Sqlite メソッド内) で次のように使用しました

  Contact *contact = [[[Contact alloc] init] autorelease];

   contact.name = [NSString stringWithUTF8String:(const char*) sqlite3_column_text(statement, 1)];

インストゥルメントを使用して実行すると、いくつかのメモリ警告が表示されます

contact.name = [NSString stringWithUTF8String:(const char*) sqlite3_column_text(statement, 1)];

このようなリークがたくさんあります..この問題を解決する方法..

4

1 に答える 1

1

クラスにメソッドを適切に実装していない限り、表示されたコードに問題はありません。deallocContact

次のようなものにする必要があります (Contact.m):

-(void) dealloc {
   [name release];
   [super dealloc];
}

コメントの意味がわかりません

はい、私はそれをアンロードでリリースしました

Contactビュー コントローラのメソッドでオブジェクトを解放するviewDidUnloadだけでは不十分です。

しかし、この機会にARC が利用可能になったのはしばらく前からであり、専門家ではないほとんどの人 (そしてほとんどの専門家も)は、このような手動のメモリ管理ではなく、ARC を使用する必要があります。

これらの時間のかかるデバッグ作業を大幅に節約できます。問題このdealloc問題である場合は、ARC が解決してくれます。

于 2013-01-02T10:50:26.103 に答える