次のエラーが表示されます。
スタックトレースなし。
-[__NSArrayI countByEnumeratingWithState:objects:count:]: message sent to deallocated instance
このメソッドを何と呼びますか?
これを呼んでいるものを突き止めることは可能ですか?ゾンビをオンにしていますが、発信者が表示されません。
スレッド 1 は次のとおりです。
他にクリック可能な唯一の行は、AFNetworking からのこの行です ( [runloop run]
)。AFNetworking ポッドをアップグレードしました。
+ (void)networkRequestThreadEntryPoint:(id)__unused object {
@autoreleasepool {
[[NSThread currentThread] setName:@"AFNetworking"];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
[runLoop run];
}
}
編集: 上記のブレークポイント@autoreleasepool
はヒットさえしませんでした。別のスレッドで同じクラッシュが発生したときにコードでこれを見つけました(前回は見ませんでした):、archiveSuccessful = line
- (void)archiveContent:(BOOL)changeNotification userInfo:(NSDictionary *)userInfo {
BOOL archiveSuccessful;
@synchronized(self) {
archiveSuccessful = [NSKeyedArchiver archiveRootObject:self.contentDictionary toFile:self.filePath];
}
if (archiveSuccessful) {
if(changeNotification && self.contentChangedNotificationName) {
[[NSNotificationCenter defaultCenter] postNotificationName:self.contentChangedNotificationName object:nil userInfo:userInfo];
}
} else {
NSAssert(NO, @"Saving archive to %@ was not successful", self.filePath);
}
}
これは
- (void)addObjects:(NSArray *)objects changeNotification:(BOOL)changeNotification {
[objects enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if([obj conformsToProtocol:NSProtocolFromString(@"DRLocalObject")]) {
[self addObject:obj changeNotification:NO];
}
}];
[self addObject...
行からのデバッガーの出力
(lldb) po obj
0x00007fde0ff56770
(lldb) po 0x00007fde0ff56770
140591727208304
編集:
threadMain:
Google アナリティクスから呼び出されます。プロジェクトを検索してクイック オープンすると、名前の付いたセレクターが表示されないthreadMain: