strong
プロジェクトを ARC に切り替えましたが、IBOutlets を使用する必要があるのかweak
、IBOutletsを使用する必要があるのか わかりません。Xcode はこれを行います: インターフェイス ビルダーで、UILabel
たとえば を作成し、それをアシスタント エディターで に接続するとViewController
、次のように作成されます。
@property (nonatomic, strong) UILabel *aLabel;
代わりに、 RayWenderlich strong
Web サイトで次のようなチュートリアルを読みました。
しかし、これら 2 つの特定のプロパティについては、別の計画があります。の代わりに
strong
、 として宣言しますweak
。
@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) IBOutlet UISearchBar *searchBar;
Weak
は、すべてのアウトレットプロパティに推奨される関係です。これらのビュー オブジェクトは既にビュー コントローラーのビュー階層の一部であり、他の場所に保持する必要はありません。アウトレットを宣言することの大きな利点はweak
、viewDidUnload メソッドを記述する時間を節約できることです。現在、
viewDidUnload
次のようになっています。
- (void)viewDidUnload
{
[super viewDidUnload];
self.tableView = nil;
self.searchBar = nil;
soundEffect = nil;
}
次のように簡略化できます。
- (void)viewDidUnload
{
[super viewDidUnload];
soundEffect = nil;
}
したがってweak
、 の代わりに を使用し、strong
でセットを nil に削除します。videDidUnload
代わりに、Xcode で を使用しstrong
、 で を使用しself... = nil
ますviewDidUnload
。
私の質問は次のとおりです。いつstrong
、いつ使用する必要がありweak
ますか? iOS 4 の展開ターゲットにも使用したいので、いつ使用する必要がありunsafe_unretain
ますか? strong
を使用する場合、weak
およびunsafe_unretain
ARCを使用する場合、誰でも簡単なチュートリアルで私をよく説明するのを手伝ってくれますか?