web-dev-qa-db-fra.com

BSXPCMessage a reçu une erreur pour le message: Connexion interrompue

MISE À JOUR: Référence # 19285042 et soumettre des rapports de bogues à Apple

Erreur très bizarre et ne rien trouver en ligne. Son énoncé "BSXPCMessage a reçu une erreur pour le message: Connexion interrompue"

Je ne fais que quelques applications de filtre de base. Le message d'erreur SEULE UNIQUEMENT si je réaffecte le fichier UIImageView.image à un autre fichier UII. Si je commente uniquement cette ligne, je n’aurai pas l’erreur. Donc, si vous pouvez imaginer une raison quelconque pour laquelle ce message apparaît lorsque j'attribue une image filtrée à un UIImageView, cela serait extrêmement utile.

Si vous pouviez suggérer une cause à cette erreur, je vous en serais reconnaissant.

#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
45
Aggressor

Le message que vous recevez est dû à un bogue de CIFilter dans iOS 8. 

Les services XPC sont conçus pour réduire le nombre de crashs en isolant des composants moins stables tels que des filtres et des plugins. Ce n'est généralement pas fatal et la connexion sera restaurée en redémarrant le service. Comme il ne s'agit pas d'un service long, mais simplement d'une opération, il est probable que votre filtre d'image ne soit pas réellement appliqué.

C’est vraiment un bogue dans iOS 8, et vous devriez enregistrer un Radar (rapport de bogue) pour indiquer à Apple que (encore un autre morceau) iOS 8 a un bogue.

Si vous envisagez de le faire, vous devez installer Quick Radar , garder une trace du numéro de radar et répondre aux nombreuses autres questions similaires sur le dépassement de capacité avec le même problème. Encouragez les autres utilisateurs à créer un rapport radar dupliqué faisant référence à votre problème initial. Cela donnera plus d'attention au bogue chez Apple.

Apple a vraiment précipité celui-ci. La solution de contournement mentionnée précédemment convient si vous pouvez faire en sorte qu'une sous-classe CIFilter différente fasse ce que vous voulez. Sinon, il vous suffira de bricoler avec la copie de l'image, en enregistrant sa représentation NSData ou en la supprimant de toute autre manière du flux de travail CIImage.

40
lswank

Pour moi, le problème se posait lorsque j'essayais d'utiliser CIFilters dans iOS8 + pour une raison quelconque?

J'ai ajouté du code pour vérifier la version iOS et si elle était supérieure à 7.9.9, j'utiliserais un substitut CIFilter qui s'appelle iOS8 +, comme: https://stackoverflow.com/a/24083728/2057171

Sur une note séparée, xCode6 avait totalement supprimé la structure CIFilter de mon projet (étrange), mais sa réintégration n'a pas résolu ce problème ...

2
Albert Renshaw

Cela a fonctionné pour moi:

OBJ-C 

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

Rapide

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

Réf.: https://stackoverflow.com/a/29872829/3411787

0
Zaid Pathan