私は客観的にメモリ管理をよく理解し始めていますが、理解できないことがあります。これは、プロパティの宣言です:プロパティを使ったメモリ管理
@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で、setterで解放された場合、保持されている新しい値にどのように設定されますか?
ありがとうございます!
ありがとうございます。 – mk12