У меня есть в приложении iOS Swift 3 следующее вычисляемое свойство.
var countItems:[Int] {// Count the interesting items.
var countResult = [Int]()
for i in 0..<size {
var count = 0
for j in i*size..<(i+1)*size {
if binaryArray?[j] == true {count += 1}
}
countResult.append(count)
}
return countResult
}
Он отлично работает в 99,9 процентах случаев. Но я получил сбой с этим сообщением:
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=2, address=0x16fc7bff0)
frame #0: 0x000000018f2d95b8 libsystem_malloc.dylib`malloc_zone_malloc
frame #1: 0x000000018f2dc56c libsystem_malloc.dylib`malloc + 32
frame #2: 0x0000000100964048 libswiftCore.dylib`swift_slowAlloc + 12
frame #3: 0x000000010096409c libswiftCore.dylib`_swift_allocObject_ + 28
frame #4: 0x0000000100f6cd50 libswiftSwiftOnoneSupport.dylib`generic specialization <preserving fragile attribute, Swift._ArrayBuffer<Swift.Double> with Swift._ArrayBuffer<Swift.Double> : Swift._ArrayBufferProtocol in Swift> of (extension in Swift):Swift._ArrayBufferProtocol._forceCreateUniqueMutableBuffer (countForNewBuffer : Swift.Int, minNewCapacity : Swift.Int) -> Swift._ContiguousArrayBuffer<A.Element> with unmangled suffix "_merged" + 84
frame #5: 0x0000000100f69d5c libswiftSwiftOnoneSupport.dylib`generic specialization <preserving fragile attribute, Swift.String.CharacterView> of Swift.Array._copyToNewBuffer (oldCount : Swift.Int) -> () with unmangled suffix "_merged" + 76
frame #6: 0x0000000100f655bc libswiftSwiftOnoneSupport.dylib`generic specialization <preserving fragile attribute, Swift.UInt64> of Swift.Array.append (A) -> () with unmangled suffix "_merged" + 124
* frame #7: 0x0000000100103078 MyApp`TheClass.countItems.getter(self=MyApp.TheClass @ 0x000000016fc7c260) at TheClass.swift:31
frame #8: 0x0000000100138354 MyApp`TheClass.callingFunction(self=0x000000010201d930) -> Bool at TheClass.swift:2343
Интересно, есть ли проблема в самом вычисляемом свойстве (которого я не вижу) или что-то должно пойти не так снаружи. Если у кого есть инфа, буду очень рад. Заранее спасибо за любой соответствующий совет.
Для справки, вот еще один сбой с более коротким сообщением:
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=2, address=0x16fc27fb0)
frame #0: 0x00000001001567bc MyApp`TheClass.countItems.getter(self=MyApp.TheClass @ 0x000000016fc27fb0) at TheClass.swift:0
* frame #1: 0x000000010018c2e4 MyApp`TheClass.callingFunction(self=0x000000010200c730) -> Bool at TheClass.swift:2348
for j in i*size..<(i+1)*size
для чего это? - person nayem   schedule 02.05.2017