BSXPCMessage收到消息错误:连接中断

时间:2014-09-26 18:12:08

标签: ios objective-c xcode uiimageview xcode6

更新:参考编号#19285042并向苹果提交错误报告

非常奇怪的错误,没有在网上找到任何东西。它的说法" BSXPCMessage收到错误消息:连接中断"

我正在做一些基本的过滤应用程序。如果我将UIImageView.image重新分配给另一个UIImage,则只会出现错误消息。如果我只是注释掉那行,我就不会得到错误。因此,当我将过滤后的图像分配给UIImageView时,如果您能够想到出现此消息的原因,那将非常有用。

如果您能为此错误提出任何原因,我将不胜感激。

#import "FilterTestsViewController.h"

@interface FilterTestsViewController ()

@end

@implementation FilterTestsViewController

UIImage* _originalImage;
UIImage* _filterImage;
UIImageView* _uiImageView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self initialize];
    //flip image by 180*

}

-(void)initialize
{
    _originalImage = [UIImage imageNamed:@"ja.jpg"]; //creates image from file, this will result in a nil CIImage but a valid CGImage;
    [self createFilterImage];
    _uiImageView = [[UIImageView alloc] initWithImage:_filterImage]; //creates a UIImageView with the UIImage
    [self.view addSubview:_uiImageView]; //adds the UIImageView to view;
}

-(void)createFilterImage
{
    NSString* filterName = @"CIFalseColor";
    CIImage* ciImage = [CIImage imageWithCGImage:_originalImage.CGImage];
    CIFilter* filter = [CIFilter filterWithName:filterName keysAndValues:kCIInputImageKey,ciImage, nil];
    _filterImage = [UIImage imageWithCIImage:[filter outputImage]];
}

@end

4 个答案:

答案 0 :(得分:40)

您收到的消息是由iOS 8中的CIFilter错误引起的。

XPC服务意味着reduce crashes by isolating less stable components,例如过滤器和插件。这通常不是致命的,并且startd重新启动服务将恢复连接。由于这不是一个长期运行的服务,而只是一个操作,很可能你的图像过滤器实际上没有被应用。

这是iOS 8中的一个错误,你应该提交Radar(错误报告),让Apple知道(还有一部分)iOS 8有bug

如果你打算这样做,你应该安装Quick Radar,跟踪雷达号码,并回答Stack Overflow上许多其他类似的问题,同样的问题。鼓励其他人提交引用原始问题的重复雷达报告。这将使苹果公司更加关注这个漏洞。

苹果真的把这个赶了出来。 previously mentioned workaround如果你可以做你想要的不同的CIFilter子类就没问题。否则,您只需修改图像,保存其NSData表示,或以其他方式将其从CIImage工作流中删除。

答案 1 :(得分:5)

通过阅读raywenderlich文章,我发现在上下文中添加一个选项,以便在CPU而不是GPU中完成渲染,将删除警告。

let context = CIContext(options:[kCIContextUseSoftwareRenderer : true])

答案 2 :(得分:2)

对我来说,当我出于某种原因尝试在iOS8 +中使用CIFilter时,问题就出现了?

我添加了一些代码来检查iOS版本,如果它大于7.9.9,我会使用类似于iOS8 +的CIFilter替代品:https://stackoverflow.com/a/24083728/2057171

另一方面,xCode6完全从我的项目中删除了CIFilter框架(奇怪),但是添加它并没有解决这个崩溃......

答案 3 :(得分:0)

这对我有用:

OBJ-C

CIContext *context = [CIContext contextWithOptions:@{kCIContextUseSoftwareRenderer:@(YES)}];

<强>夫特

let context = CIContext(options:[kCIContextUseSoftwareRenderer : true])

参考:https://stackoverflow.com/a/29872829/3411787