1

Interface Builder を使用して UI を作成し、IBOutlets にアタッチすると、常にプロパティを弱いに設定します...

@property (nonatomic, weak) IBOutlet UILabel *someLabel;

次に、のコードでorUIViewControllerを参照でき、正常に動作します。self.someLabel_someLabel

しかし、コードでUIを設定すると...

@property (nonatomic, weak) UILabel *someLabel;

と...

self.someLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,10,10)];

その後、警告が表示されます...

Assigning retained object to weak property; object will be released after assignment.

これに対する私の通常の修正は、プロパティを変更するstrongことですが、これが正しいかどうかわかりませんか?

それは大丈夫ですか?そうでない場合、これを修正する別の方法はありますか?

4

1 に答える 1

2

これに対する私の通常の修正は、プロパティをストロングに変更することですが、これが正しいかどうかわかりませんか?

これは 100% 正しいです。IB ベースのプロパティが宣言されている理由は、NIB オブジェクトから作成されたビューが対応する UI 要素を既に保持しているため、コードからweakの参照は必要ありません。strong

于 2013-05-09T10:01:51.763 に答える