我有這個崩潰:objc_retains在我的代碼。objc_retain塊BlocksKit
我的項目是ARC。
然後我添加一個符號斷點,其符號是「objc_retain」,模塊是「libobjc.A.dylib」。
而且我發現它終於崩潰,在這個文件「BlocksKit」的:
+ (void)associateCopyOfValue:(id)value withKey:(const char *)key {
objc_setAssociatedObject(self, key, value, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
如果我不使用的功能「performBlock ......」「BlocksKit」的,它的工作原理:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//if I delete the code below, it works
[self performBlock:^(id sender) {
NSLog(@"hit");
} afterDelay:0.3f];
}
我已經調試了幾天,但我解決不了這個問題T_T 任何人都可以幫助我嗎?
這是我的項目: http://www.mediafire.com/download/hppnt7k491y5f1k/QQSDKDemo.zip
這是調用堆棧:
callStack :(
0 QQSDKDemo 0x00008b8e +[NSObject(A2BlockDelegateBlocksKitPrivate) bk_accessorsMap] + 142
1 QQSDKDemo 0x00008de1 +[NSObject(A2BlockDelegateBlocksKitPrivate) registerDynamicDelegateNamed:forProtocol:] + 81
2 QQSDKDemo 0x00009f58 +[MFMailComposeViewController(BlocksKit) load] + 136
3 libobjc.A.dylib 0x019657f5 call_load_methods + 437
4 libobjc.A.dylib 0x01967de5 load_images + 133
5 ??? 0x8fef0c32 0x0 + 2414808114
6 ??? 0x8feff252 0x0 + 2414867026
7 ??? 0x8feff0ba 0x0 + 2414866618
8 ??? 0x8fef0e05 0x0 + 2414808581
9 ??? 0x8fef4adb 0x0 + 2414824155
10 ??? 0x8fef0376 0x0 + 2414805878
11 ??? 0x8fef0077 0x0 + 2414805111
)
看起來代碼只是將塊的副本與自身相關聯(類似於創建ivar ref)。 。 。它應該沒問題。你可以在崩潰時打印堆棧跟蹤嗎? (http://stackoverflow.com/questions/220159/how-do-you-print-out-a-stack-trace-to-the-console-log-in-cocoa)併發布堆棧跟蹤。 –
感謝您的回覆!我發佈了堆棧跟蹤。 – Aevit