2017-08-09 103 views
1

我對Swift相當陌生(我在一個月前瞭解它),並且正在創建一個自定義集合視圖單元格,並將自定義類連接到View Controller類。我在問這個問題,因爲我一直在努力尋找一個bug如何消除導致此問題的錯誤線程1:EXC_BAD_ACCESS錯誤?

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

     let answer = collectionView.numberOfItems(inSection: cellArray.count) 

     return answer 
} 

出了幾個小時。這個bug是我View Controller類中的一個方法,它在LLDB窗口中顯示一條錯誤消息「線程1:EXC_BAD_ACCESS(代碼= 2 ... [計算機內存地址here]」在let answer = collectionView.numberOfItems(inSection: cellArray.count)處突出顯示,我有followed this tutorial,錯誤不消滅

我已經包括了我的視圖控制器類的一部分,我初始化屬性,如果是有幫助的。

@IBOutlet weak var ibCollectionView: UICollectionView! 

var cellArray:[customCollectionViewCell] = Array(repeatElement(customCollectionViewCell(), count: 6)) 

let displayedCellDimensions = CGSize(width: 343, height: 248) 

截圖的LLDB接口: Here is a screenshot of the LLDB interface.

任何幫助表示讚賞,因爲我很困難謝謝你!

+0

滅掉一個bug是農藥!......現在,嚴重的是,你檢查了的CollectionView不是零和cellArray不爲零的最好? – Gusman

+0

@Gusman我很確定。我已經編輯了這篇文章,其中包括LLDB界面的屏幕截圖,其中顯示了collectionView的內存位置 – ProgrammingEnthusiast

+0

希望沒有人責怪我指向你的外部資源...試試這個方法來調試異常,它會給你更多的信息:https://code.tutsplus.com/tutorials/what-is-exc_bad_access-and-how-to-debug-it--cms-24544 – Gusman

回答

1

,在跳出我的第一件事情是,你遞歸調用您的numberOfItemsInSection:

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

    let answer = collectionView.numberOfItems(inSection: cellArray.count) 

    return answer 

相反,你應該只給它想要的東西,項目數:

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

    return cellArray.count 

當您重命名或刪除並重新添加Swift文件中的InterfaceBuilder插口而不修改故事板插口時,會發生處理collectionViews和tableViews的另一個問題。我已經包含了屏幕截圖,所以你能明白我的意思:

Storyboard, assistant editor, and connections inspector

如果那些充滿界的一個是空的,連接中斷。要解決此問題,請執行以下操作:

  1. 打開故事板並選擇heirarchy中的集合視圖。
  2. CTRL +在助手編輯器中從梯級拖動到swift文件(用熱鍵Alt + CMD + Enter打開)
  3. 應該出現一個對話框。輸入插座的設置。
  4. 清理swift文件和連接編輯器中的舊插座和斷開的連接。
+0

謝謝!我做了這些事情,現在當我去iOS模擬器中運行應用程序時,該應用程序只是凍結; LLDB不顯示任何內容;我必須停止Xcode中的模擬。你知道這是爲什麼嗎? – ProgrammingEnthusiast

+0

謝謝!我看到那個教程,但我被告知,對於這部分應用程序,我不需要UICollectionViewController。 [這是我的代碼的其餘部分的鏈接,因爲它是目前。](https://stackoverflow.com/questions/45463354/why-wont-my-collection-view-cells-display-in-the -iPhone模擬器)。我在'return cellArray.count'處插入了一個斷點,現在它有一個綠色的消息「Thread 1:breakpoint 1.1」當它沒有斷點運行時,AppDelegate.swift有一個線程1:signal SIGABRT錯誤,但我仍然不確定這裏要做什麼。 – ProgrammingEnthusiast

+0

我一直在玩代碼,它仍然拋出線程1:信號SIGABRT錯誤。 [這是我的代碼](https://gist.github.com/ProgrammingExterminator/aebfb74a405200970297002c33d910c1)。在這一點上我很迷茫。 – ProgrammingEnthusiast

相關問題