1

合成されたプロパティを宣言するときに使用するとassign、ARC はそれに一致する ivar を自動的に作成しますか? 私の財産は次のとおりです

@property (nonatomic, assign) NSString *text:

- (NSString *)text {
    return self.label.text; // label is a UILabel
}

- (void)setText:(NSString *)text {
    self.label.text = text;
}

_text自動生成されたivarを使用したことはありません。省略してもコンパイラはこのivarを作成します@synthesize text = _textか、それとも未使用のivarは未使用のメモリにそのまま残りますか?

4

3 に答える 3

1

インスタンスごとに 4 ~ 8 (32/64 ビット ポインター) バイトの余分な割り当てが心配ですか? assign、weak または strong strong を使用しても、メモリ フットプリントは変わりません。文字列がコピーされていないものを使用しても、参照は常に同じインスタンスを指します。違いは、assig、weak がオブジェクトの参照カウントを増加させないことだけです。そのため、ivar を省略すると、使用するアーキテクチャに応じて 4 ~ 8 バイトしか「節約」できません。

于 2014-09-03T14:35:49.887 に答える