Objective-C でのメモリ管理の理解が深まりつつありますが、理解できないことがあります。これはプロパティ宣言です:
@property (nonatomic, retain)UILabel *myLabel;
そして、これは目に見えない合成セッターです(私は思います):
- (void)setMyLabel:(UILabel *)newValue {
if(myLabel != newValue) {
[myLabel release];
myLabel = [newValue retain];
}
}
これにより、毎回保持などのすべての作業を節約できますが、初めてプロパティを設定したとします。まだ割り当てられていないため、参照カウントは 0 ですよね? 私もです
UILabel *tempLabel = [[UILabel alloc] init];
self.myLabel = tempLabel;
[tempLabel release];
何もリリースしない場合に何が起こるかはよくわかりませんが、プロパティには既に値があり、それを設定するとします。セッターでは、まず解放されます。それで消えるんじゃないの?参照カウントが 1 で、セッターで解放された場合、保持された新しい値に設定されるためにどのように留まりますか?
ありがとう!!