UIImageView setImage无法在委托方法中工作?

mad*_*max 2 opencv objective-c uiimageview uiimage

我在opencv委托方法中调用setImage函数时遇到问题processImage.
当我打电话setImage时viewDidLoad,我可以看到图像,但是当我这样做时processImage,它不起作用.

这有什么问题?

- (void)viewDidLoad
{
  [super viewDidLoad];

  // This works !
  [processImageView setImage:[UIImage imageNamed:@"resistor3.jpg"]];
}

- (void)processImage:(cv::Mat&)img   {

  // This does not work anymore !
  [processImageView setImage:[UIImage imageNamed:@"resistor3.jpg"]]; 
}
Run Code Online (Sandbox Code Playgroud)

Hug*_*ius 8

当您修改UI时,必须从主线程执行此操作,如果委托方法被调用,则可能会在另一个线程上调用该方法.试试这个.

- (void)processImage:(cv::Mat&)img   {
    dispatch_async(dispatch_get_main_queue(), ^{
        [processImageView setImage:[UIImage imageNamed:@"resistor3.jpg"]];
        // I also think you should use the dot syntax, but that's purely a style thing
        // processImageView.image = [UIImage imageNamed:@"resistor3.jpg"];
    });
}
Run Code Online (Sandbox Code Playgroud)

编辑:添加有关使用点语法的建议