Подтвердить что ты не робот

BSXPCMessage получил сообщение об ошибке: соединение прерывается

ОБНОВЛЕНИЕ: ссылка # 19285042 и отправьте отчеты об ошибках в apple

Очень странная ошибка и не находит ничего онлайн. Его высказывание "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
4b9b3361

Ответ 1

Сообщение, которое вы получаете, связано с ошибкой CIFilter в iOS 8.

Службы XPC предназначены для уменьшения сбоев путем изоляции менее стабильных компонентов, таких как фильтры и плагины. Обычно это не фатально, и соединение будет восстановлено при перезапуске службы launchd. Поскольку это не длинный сервис, а просто операция, скорее всего, ваш фильтр изображения фактически не применяется.

Это очень большая ошибка в iOS 8, и вы должны записать Radar (отчет об ошибке), чтобы Apple узнала об этом (пока другой кусок) iOS 8 имеет ошибку.

Если вы собираетесь это сделать, вы должны установить Quick Radar, отслеживать номер радара и отвечать на многие другие аналогичные вопросы о переполнении стека с той же проблемой. Поощряйте других людей подавать дублированный радарный отчет, ссылающийся на вашу оригинальную проблему. Это даст больше внимания Apple.

Apple действительно выбралась из этого. ранее упомянутый обходной путь хорош, если вы можете сделать другой подкласс CIFilter, сделайте то, что хотите. В противном случае вам просто придется возиться с копированием изображения, сохранить его представление NSData или иным образом удалить его из рабочего процесса CIImage каким-либо другим способом.

Ответ 2

Из чтения статьи raywenderlich я обнаружил, что добавление опции в контекст, так что рендеринг выполняется в ЦП, а не GPU, удалит предупреждение.

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

Ответ 3

Для меня проблема возникла, когда я попытался использовать CIFilters в iOS8 + по какой-то причине?

Я добавил код для проверки версии iOS, и если бы он был больше 7.9.9, я бы использовал замену CIFilter, что iOS8 + вроде: fooobar.com/questions/24450/...

В отдельном примечании xCode6 полностью удалил фреймворк CIFilter из моего проекта (странно), но добавление его обратно не устранило этот сбой...

Ответ 4

Это сработало для меня:

OBJ-C

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

Swift

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

Ссылка: fooobar.com/info/125109/...