私はUITextFieldを持っており、デリゲートクラスには私はUITableViewを持っています。ここにコードはあります:メモリリーク - Instruments、Objective-C
- (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string {
value = [[theTextField.text stringByReplacingCharactersInRange:range withString:string] retain];
[valueTable reloadData];
return YES;
}
"value"は "NSString * value;"というクラス名の上に宣言されたNSStringです。 "valueTable"は単なるUITableViewです。メモリリークをテストすると、 "value = [[theTextField.text stringByReplacing ..."]行に "100%"というメモリリークが発生し、その行の "retain"を削除しようとしました。しかし、その後、私が「価値」を求めたとき、それは無かった。それは良くない。
どうすればメモリリークを修正できますか?そして、メモリリークは何ですか?ありがとう!
最初の例の 'if(value)'ステートメントは不要です。 'value'が' nil'ならば '[value release];は何もしません。そうでなければ解放されます。 – kubi
非常に真です。それは単に私がラインに沿ってどこかで拾った習慣です。 –