2017-09-06 14 views
0

私のアプリはコード内の弱い参照を割り当てるときにクラッシュしますが、ストーリーボードを使用するときはデフォルトでweak要素が強制的に割り当てられます。ui要素に弱い参照を割り当てると、なぜアプリがクラッシュするのですか?

class UploadContactShowViewController: BasePage,UITableViewDelegate,UITableViewDataSource, DARChatPhoneShowCellDelegate { 

    var counter = 0 

    var delegate: UploadContactShowViewControllerDelegate? 
    var contact: APContact? 

    var contactSelected: APContact? 
    var contacts: [DARContact] = [] 
    var selectedContacts: [DARContact]! 
    var checkBoxs: [BEMCheckBox]! 

    var avatarImageView: UIImageView! 
    var fullNameLabel: UILabel! 
    var tableView: UITableView! 
} 
+2

弱い参照ではありません –

+0

私には「弱い」はありません – sCha

+0

上記の2つのコメントに加えて、暗黙のうちにアンラップされたオプションがあります。コンパイラに指示しているオプションの変数はある時点ではnil以外の値。これをしないと、アプリケーションはそれらが無限であるという前提のもとでこれらの変数を使用しようとするたびにクラッシュします。 – Sparky

答えて

0

ストーリーボード(またはxib)がUI要素をアーカイブ解除すると、サブビューとして既存のビューに追加されます。このため、強力な参照があり(サブビューは強く参照されています)、IBOutletsは弱いですが、割り当てが解除されないようにするための強力な参照があります。

コードでビューを作成し、weakの参照に追加する場合は、既にサブビューとして追加していない限り参照がないため、これらのUIアイテムを保持するものはないため、割り当てが解除されます。

関連する問題