2017-07-27 90 views
1

我對Swift iOS開發相對比較陌生(我實際上有3年Java開發經驗,嘗試學習新技術)。我創建需要被稱爲SearchTextField庫的使用一個應用程序:iOS Swift EXC_BAD_ACCESS代碼2 SearchTextField(UITextField子類)

https://github.com/apasccon/SearchTextField

在shellnut,這是一個的UITextField子類,有一個下拉建議/自動完成功能。

下面是使用它的視圖控制器...

@IBOutlet var homeAddressTextField: SearchTextField! 
@IBOutlet var workAddressTextField: SearchTextField! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    homeAddressTextField.delegate = self 
    workAddressTextField.delegate = self 

    homeAddressTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) 
    workAddressTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) 

    //vvvvvvvvv EXC_BAD_ACCESS CODE 2 THROWN BELOW vvvvvvvv 
    homeAddressTextField.filterStrings(["foo","bar"]) 
} 

homeAddressTextField應該被實例化,否則任何提及它上面應該拋出同樣的異常。當突出顯示有問題的行時,homeAddressTextField是而不是無,並且正確顯示它是SearchTextField的實例。

我已經嘗試了很多事情來解決或至少找到錯誤的來源。正如你所看到的,我使用了一個強大的變量,而不是使用弱變量來表示Outlet。

我曾嘗試使用殭屍跟蹤任何嘗試訪問釋放的內存塊,但殭屍儀器沒有提出訪問殭屍。

如果值得注意,只要包含filterStrings()的有問題的行被移除,錯誤就會消失。任何幫助表示讚賞!

+0

請問您可以在這裏發佈整個錯誤嗎? –

+0

您使用ARC嗎? – Balasubramanian

+1

@SivajeeBattina不知道你是什麼意思的「整個錯誤」,因爲這是我越來越...線程1:EXC_BAD_ACCESS(code = 2,address = 0x610000472680)'在問題指示的行上。每次運行時異常地址都會更改。 – darkterbears

回答

2

看來臭蟲庫,請您點擊這裏

SearchTextField Issue

正是在他們的倉庫仍然是開放的問題。

如果您嘗試使用某個現成的代碼,請注意存儲庫中的問題。

0

您確定已將IBOutlet附加到界面構建器中嗎?

嘗試在崩潰的線上放置斷點。這將在執行該行之前停止。然後,在控制檯(命令+ shift + y)中,您會看到一行顯示「lldb」的行 - 將光標放在那裏並鍵入po homeAddressTextField並查看它是否返回值或零。如果爲零,那麼IBOutlet設置不正確,這會導致訪問不良。

此外,如果它確實爲零,您需要確保子類和模塊都在SearchTextField上的接口生成器中設置,並確保設置出口本身。您也可以嘗試在viewDidAppear()方法中過濾這些字符串,以查看它是否確實是引用SearchTextField的問題。

編輯:我已經通過代碼看了一下回購。您可能不想設置數據源和委託屬性,因爲SearchTextField具有自己的數據源和委託。你只需要設置可過濾的字符串,因爲你在最後一行。因此,請嘗試刪除調用以使視圖控制器成爲數據源/委託。

+0

homeAddressTextField不爲零,如lldb以及調試器接口所證實。 – darkterbears

+0

剛剛更新了我的答案。嘗試刪除委託行。 –

+0

我嘗試從類聲明中刪除委託行以及UITextFieldDelegate。它仍然拋出異常。事實上,我添加了代表行以嘗試修復它lol – darkterbears

相關問題