2016-10-28 5 views
0

私は迅速に書かれた私のコードでいくつかの研磨とプロファイリングをしようとしています。私は非常に詳細な質問がたくさんあり、弱く強い参照などのトピックを検索することで簡単に見つけることはできません。weak var:test:UIViewの違いは何ですか?弱いvarテスト:UIView?アウトレットで?

たとえば、コンセントに使用されている次のいずれかの行にXCodeが表示されることはありません。私は弱い参照とメモリ管理を維持することに関して、もしあれば違いが何であるかを誰かが説明できるかどうか分かっていただければ幸いです。

@IBOutlet weak var mapTab : MKMapView? 

@IBOutlet weak var mapTab : MKMapView! 

それだけでアンラップされるか、それが参照の性質を変更するのですか?

答えて

1

後者は、暗黙的にアンラップされたオプションです。それが使用されるときはいつでも、自動的にあなたのために自動的に実行されるフォールアンラップと考えることができます。巻き戻されていない値がnilの場合、これはもちろんクラッシュします。

以前のものは通常のオプションなので、明示的にアンラップする必要があります。 guard letif let??などで扱うことができます。または、最初のケースと同様に動作する明示的にアンラップすることもできます。

+0

だから私はそれを参照の性質上何も変わらないと思っています、それは正しいですか?弱い弱いですか? – TheeBen

+0

ええ、それは直交の概念です。あなたのIBOutletは強力な参照でなければなりません。 IBOutletsを親に保持しているサブビューがあるときはいつでも、強い参照サイクルを避けるためには弱いだけです。しかし、それはまず最初にやることは悪い考えです。 – Alexander

+0

が正しい。明確化のためにありがとう – TheeBen

関連する問題