私の知る限り、NSStringは「一度作成され、読み取り専用」タイプです。値を NSString に再割り当てする場合、実際にはポインタの値を変更して別のメモリ アドレスを指すようにしますが、NSString オブジェクトは変更されません。
私の質問は次のとおりです: NSString オブジェクトにそれを指す他のポインターがない場合、再割り当て後にメモリリークが発生していますか?
詳細については、次のコードを参照してください。
@interface ViewController ()
@property (nonatomic,strong) NSString* aString;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.aString = [NSString stringWithFormat:@"Hello %@",@"Philip"];
// only for setting a break point
int x;
// reassigning
self.aString = [NSString stringWithFormat:@"Goodbye"];
// only for setting another break point
int y;
}
@end
デバッグ コンソールで:
(lldb) po self.aString
(NSString *) $0 = 0x00337d00 Hello Philip
(lldb) po self.aString
(NSString *) $1 = 0x3f41dfe0 Goodbye
(lldb)
値を再割り当てした後、aString が別のメモリ位置を指していることを明確に示しています。0x00337d00
もう 1 つの質問は、で始まるオブジェクトをデバッグ コンソールに表示するにはどうすればよいですか?