Objective-cのメモリ管理についていくつか質問があります。
まあ言ってみれば:
NSString * test= [[NSString alloc] init ]
test=@"msg";
[object setStr1: test ]; // declared as: @property(copy, readwrite)
[object setStr2: test ]; // declared as: @property(retain, readwrite)
[object setStr3: test ]; // declared as: @property(assign, readwrite)
test=@"some other string"
sのコンテンツstr1
のコピーがあると思います:含まれているメモリ(ヒープ)の1つのアドレスを指します。このアドレスは、が指しているアドレスと同じではありません。右?test
str1
msg
test
str2について:
1。何を保存しますか?、同じアドレスを指していると思いますtest
が、参照カウンターが2に増えますtest
。2
。テストの内容を変更すると、str2には何がありますか?私はそれがまだ指していると思いますmsg
str3について:それは間違っていますよね?、どうしassign
ますか?
ありがとう。
ボーナス質問:
NSString * test= [[NSString alloc] init ]
test=@"msg";
test=@"something";
コンテンツを変更する前にテストをリリースする必要がありますか?