BSXPCMessage收到错误消息:连接中断
UPDATE:参考#19285042,并提交错误报告给苹果BSXPCMessage收到错误消息:连接中断
非常奇怪的错误,而不是在网上找到任何东西。它说“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
你所得到的消息是由于iOS的一个CIFilter错误8.
XPC服务旨在reduce crashes by isolating less stable components如过滤器和插件。这通常不是致命的,连接将通过启动重新启动服务来恢复。由于这不是一个长时间运行的服务,而只是一个操作,所以很可能你的图像过滤器并未实际应用。
这是iOS 8中的一个错误,而你应该文件Radar(错误报告)让苹果知道(又一块)iOS 8有一个错误。
如果你打算这样做,你应该安装Quick Radar,跟踪雷达号码,并回答堆栈溢出的许多其他类似的问题与同样的问题。鼓励其他人提交引用原始问题的重复雷达报告。这会给苹果更多的关注。
苹果真的冲了这一个。 previously mentioned workaround是好的,如果你可以做一个不同的CIFilter子类做你想做的。否则,你只需要复制图像,保存其NSData表示形式,或者以其他方式将其从CIImage工作流程中移除。
对我来说,这个问题正在发生时,我会尝试使用CIFilters在iOS8上的+出于某种原因?
我添加了一些代码来检查的iOS版本,如果它比7.9.9更大,我会用一个CIFilter替代品的iOS8上+这样的:https://stackoverflow.com/a/24083728/2057171
在一个单独的侧面说明,xCode6已经删除CIFilter框架从我项目共(奇怪),但其重新添加并没有解决这个问题崩溃了...
当Game Center GKMatchmaker对话框出现时,我刚刚出现了这个问题。这是苹果自己的对话,我猜他们正在做一些CI不喜欢的事情。 – BGreenstone 2015-04-14 12:13:00
回想起来,我能够让真正的CIFilter工作,我只需要以不同的方式对它们进行编码,我不记得我做了什么,这是一段时间以前的事情,但是我认为它与不运行CIFilter有关主线程或其他东西(你可以在iOS7中做,但是由于某种原因,他们阻止你在iOS8中执行)。 – 2015-06-19 22:28:50
从阅读raywenderlich文章,我发现在上下文中添加一个选项,以便在CPU而不是GPU中完成渲染,将删除该警告。
let context = CIContext(options:[kCIContextUseSoftwareRenderer : true])
这为我工作:
OBJ-C
CIContext *context = [CIContext contextWithOptions:@{kCIContextUseSoftwareRenderer:@(YES)}];
斯威夫特
let context = CIContext(options:[kCIContextUseSoftwareRenderer : true])
我在XCode 6中也以相似的方式使用CIFilter获得了相同的错误。我从来没有见过BSXPC,但我不知道它是什么。我发现这个要点在一个非常不同的环境中显示相同的问题:https://gist.github.com/saurabh360/19d739e3c0ccee1caf34 – michaelsnowden 2014-09-28 22:28:43
我不知道,但如果我把某些东西,我会回答这个问题。 – Aggressor 2014-10-02 19:28:32
这与ios 8中的内存有关。当我通过Xcode 5和ios 7运行相同的代码时,出现内存警告,但无论出于何种原因,它都不会在ios 8中生成。通过Xcode 6的内存分析器不会显示增加的内存使用情况。所以,我不太确定这个故事是什么。 – puzzl 2014-10-09 15:44:39