0
所以我有一個名爲學生的NSManagedObject。當我調用學生對象的方法時,例如student.performTask()
,有時會有部分代碼中斷。這給了我一個EXC_BAD_ACESS,這讓我相信這是一個線程核心數據問題。但是,在代碼中斷之前的一行我從對象訪問變量,並且沒有運行時錯誤。所以我的問題是:調用NSManagedObject中的變量與調用方法之間有什麼區別?是什麼導致它打破一個而不是另一個?調用NSManagedObject函數中斷,但不訪問變量時
注意:在執行方法中的單行之前,程序會中斷。
這裏是我的代碼片段:
let attendances = Attendance.createOrUpdateFromJsonDictionary(data!)
var seenIds = [NSNumber]()
for attendance in attendances {
let student = attendance.student
if !seenIds.contains(student.id) { //does not complain when accessing the id
seenIds.append(student.id)
let oldCurrent = student.isCurrent //does not complain or break here
student.setIsCurrent() //<- breaks here
莫非事實attendance
也有學生的關係,我從出席抓住學生一個NSManagedObject?
你用'-com.apple.CoreData.ConcurrencyDebug 1'標誌運行嗎?這將確認或否認線程問題。其次,用完整的錯誤文本更新您的問題,因爲其餘的錯誤可能非常有用。是什麼讓你認爲你有線程問題?你使用多線程?網絡代碼也許? –
是的,這是在線程Alamofire GET請求內部調用的。我只是添加了標誌,但我現在無法重複該錯誤。我喜歡調試!在控制檯中沒有錯誤文本,只是在它正在破壞的行上的exc_bad_access。 – boidkan