NSNotificationCenter&无法识别的选择器发送到实例。

时间:2014-01-01 17:56:37

标签: ios nsnotificationcenter unrecognized-selector

我有很多'项目'包含项目图片的对象。当我的应用程序运行时,它会从网址加载项目的图像。加载后,它会向NSNotificationCenter发布带有图像ID的通知。

我有一个UIImageView的子类,它有一个指向该项的指针并侦听具有该项ID的通知。当从网址加载项目图像时,imageView将图像更新为项目的图像。

然而,有时候(但不是100%的时间)会发生奇怪的事情并且我会抛出异常:

-[__NSCFType imageLoaded:]: unrecognized selector sent to instance 

我认为ARC出于某种原因过早地发布了一个对象。但我不会使用弱指针因为我曾经有过糟糕的经历。这是一些代码:

//Inside my Item object
-(void)loadItemImage{
    ConnectionManager *conman = [[ConnectionManager alloc] init];
    [conman getImageWithURL:self.imageURL inBackgroundWithBlock:^(NSString *error, id image) {
        if (image){
            self.image = image;
            [[NSNotificationCenter defaultCenter] postNotificationName:[NSString stringWithFormat:@"image%i", self.pk] object:nil]; //exception is thrown here.
        }else{
            NSLog(@"error: %@", error);
        }
    }];
}

//inside my ImageView class (subclass of UIImageView)
-(void)imageLoaded:(id)sender{
    self.image = item.image;
}

对我来说有意义的是,如果某个对象以某种方式被释放,那么它是不是在听取通知?似乎如果对象正在侦听通知,那么它可以调用选择器方法。

0 个答案:

没有答案