Tôi có đoạn mã sau:NSDictionary allKeys tai nạn - Không thể hiểu được hoàn cảnh Báo cáo tai nạn
- (Item *) getRandomItem {
if (itemIDs == nil) {
[self parse];
}
NSArray * allKeys = [allItems allKeys];
int seed = arc4random()%[allKeys count];
return [self getItemByID:[allKeys objectAtIndex:seed]];
}
Nó đôi khi bị treo trên các ứng dụng trực tiếp, nhưng chúng ta không thể tái tạo vụ tai nạn. Tôi đã cố gắng phân tích báo cáo và hiểu những gì có thể là nguyên nhân của vụ tai nạn, nhưng tôi đã không thành công. Bất kỳ cách nào tôi cố gắng giả mạo đối tượng allItems
để tạo ra sự cố, dẫn đến lỗi khác với lỗi được báo cáo ở đây.
Tôi muốn một số hiểu biết giúp đỡ trong hoàn cảnh nào sự sụp đổ sau sẽ xảy ra:
Hardware Model: iPhone3,1
Code Type: ARM (Native)
Parent Process: launchd [1]
OS Version: iPhone OS 5.0.1 (9A405)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000010
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libobjc.A.dylib 0x3427eb30 _class_isInitialized
1 libobjc.A.dylib 0x3427e8d6 _class_initialize
2 libobjc.A.dylib 0x3427e88e prepareForMethodLookup
3 libobjc.A.dylib 0x3427e76a lookUpMethod
4 libobjc.A.dylib 0x3427e008 objc_msgSend_uncached
5 CoreFoundation 0x33f7c020 CFRetain
6 CoreFoundation 0x33f85bac +[__NSArrayI __new::]
7 CoreFoundation 0x33f85ac6 -[__NSPlaceholderArray initWithObjects:count:]
8 CoreFoundation 0x33f85806 +[NSArray arrayWithObjects:count:]
9 CoreFoundation 0x33fa0e92 -[NSDictionary allKeys]
10 AClockworkBrain 0x0008f46e -[ItemManager getRandomItem] (ItemManager.m:360)
......
Cảm ơn bạn.
Bạn đang sử dụng ARC hay không? Điều này có vẻ là một lỗi liên quan đến bộ nhớ. –
Chờ, bạn đang cố gắng thêm một số nguyên vào từ điển của bạn? Bạn đang cố gắng gửi một tin nhắn đến một đối tượng ở bộ nhớ 0x10, có vẻ như một thứ gì đó sẽ là một số nguyên bình thường trong ứng dụng của bạn. –
Richard, chúng tôi không sử dụng ARC. – dimitrios