崩溃的KVO代码,我该如何解决这个问题?

时间:2014-06-10 16:56:19

标签: ios objective-c key-value-observing

[self.kvoController observe:user keyPath: @"fullName" options:NSKeyValueObservingOptionNew block:^(id observer, id object, NSDictionary *change) {
        dispatch_async(dispatch_get_main_queue(), ^{
            NSString *fullname = [change objectForKey:NSKeyValueChangeNewKey];
            if ([fullname isKindOfClass:[NSString class]]) {
                if (![weakSelf.fullnameLabel.text isEqualToString: fullname]) {
                    weakSelf.fullnameLabel.text = fullname;
                    [weakSelf.fullnameLabel sizeToFit];
                }
            }
        });
    }];

此代码在第3行NSString *fullname = [change objectForKey:NSKeyValueChangeNewKey];

崩溃

崩溃日志如下:

Crashed: com.apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x00002069

0  libobjc.A.dylib                0x38449612 objc_retain + 17
1  Retro                          0x0013336b __33-[ProfileHeaderView observeUser:]_block_invoke_2491 (ProfileHeaderView.m:598)
2  libdispatch.dylib              0x38922833 _dispatch_call_block_and_release + 10
3  libdispatch.dylib              0x3892281f _dispatch_client_callout + 22
4  libdispatch.dylib              0x3892949f _dispatch_main_queue_callback_4CF$VARIANT$mp + 278
5  CoreFoundation                 0x2d83b8f1 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
6  CoreFoundation                 0x2d83a1c5 __CFRunLoopRun + 1300
7  CoreFoundation                 0x2d7a4f0f CFRunLoopRunSpecific + 522
8  CoreFoundation                 0x2d7a4cf3 CFRunLoopRunInMode + 106
9  GraphicsServices               0x326ca663 GSEventRunModal + 138
10 UIKit                          0x300f016d UIApplicationMain + 1136
11 Retro                          0x0007d253 main (main.m:16)

知道为什么它崩溃了,因为我无法在我的设备上复制这个(日志来自崩溃记者)。

0 个答案:

没有答案