Ios 解除锁定后检查回调内的对象

Ios 解除锁定后检查回调内的对象,ios,uitableview,exc-bad-access,Ios,Uitableview,Exc Bad Access,请耐心听我解释 我在UITableViewCell中有一个HJManagedImageV实例。 我将其回调设置为self,一个实现 所需协议(HJManagedMageVDelegate) 当我导航到然后快速离开此控制器时,回调是 最终在不再存在的对象上激发。(HJManagedImageV) 保留其代理。) 问题是在回调中我无法检查 如果对象在未获得EXC\u BAD\u访问权限的情况下有效 -(void)managedImageSet:(HJManagedImageV*)mi {

请耐心听我解释

我在UITableViewCell中有一个HJManagedImageV实例。 我将其回调设置为self,一个实现 所需协议(HJManagedMageVDelegate)

当我导航到然后快速离开此控制器时,回调是 最终在不再存在的对象上激发。(HJManagedImageV) 保留其代理。)

问题是在回调中我无法检查 如果对象在未获得EXC\u BAD\u访问权限的情况下有效

-(void)managedImageSet:(HJManagedImageV*)mi {

    mi.callbackOnSetImage = nil;

    if(mi != nil && mi.image != nil) { // EXC_BAD_ACCESS when checking mi.image
        [mi setImage:[mi.image roundedCornerImage:9 borderSize:0]];
    }
}
以下是坠机时的mi:

mi  HJManagedImageV *   0x0022fae0
    UIView  UIView  
    oid id  0x00000000
    url NSURL * 0x00000000
    moHandler   HJMOHandler *   0x00000000
    image   UIImage *   0x00000000
    imageView   UIImageView *   0x00000000
    callbackOnSetImage  id  0x00000000
    callbackOnCancel    id  0x00000000
    callbackOnError id  0x00000000
    isCancelled BOOL    false
    loadingWheel    UIActivityIndicatorView *   0x00000000
    onImageTap  NSInvocation *  0x00000000
    index   int -1
    modification    int 0

我不明白为什么检查mi.image会让我崩溃。除此之外,我如何判断mi是否仍然可用?

使用委托模式的对象不会比其委托更长寿,这是一种良好的设计实践。但是,如果这是一个不必要的错误,那么应该确保在释放委托本身时将对象的委托ivar设置为nil

换句话说,,
代理常常碰巧是其对象的所有者。如果委托人希望其子女比自己长寿,则其所有者有责任清除委托IVAR。

使用委托模式的对象不会比其委托人长寿,这是良好的设计实践。但是,如果这是一个不必要的错误,那么应该确保在释放委托本身时将对象的委托ivar设置为nil

换句话说,, 代理常常碰巧是其对象的所有者。然后,如果委托人希望自己的孩子活得比自己长,那么委托人有责任清除委托人的IVAR