wake-up-neo.com

Fehler bei BSXPCMessage für Nachricht: Verbindung unterbrochen

UPDATE: Referenz # 19285042 und Fehlerberichte an Apple senden

Sehr seltsamer Fehler und nichts online zu finden. Sein Hinweis "BSXPCMessage hat Fehler für Nachricht: Verbindung unterbrochen" erhalten

Ich mache nur einige grundlegende Filteranwendungen. Die Fehlermeldung tritt NUR auf, wenn ich das UIImageView.image einem anderen UIImage neu zuweise. Wenn ich nur diese Zeile auskommentiere, bekomme ich den Fehler nicht. Wenn Sie sich einen Grund vorstellen können, warum diese Meldung angezeigt wird, wenn ich einem UIImageView ein gefiltertes Bild zuweise, wäre das unglaublich hilfreich.

Wenn Sie eine Ursache für diesen Fehler vorschlagen können, wäre ich Ihnen dankbar.

#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

Die Meldung, die Sie erhalten, ist auf einen CIFilter-Fehler in iOS 8 zurückzuführen.

XPC-Dienste sollen Abstürze reduzieren, indem weniger stabile Komponenten isoliert werden wie Filter und Plugins. Dies ist normalerweise nicht schwerwiegend und die Verbindung wird durch einen Neustart des Dienstes wiederhergestellt. Da es sich nicht um einen langfristigen Dienst handelt, sondern lediglich um eine Operation, wird der Bildfilter möglicherweise nicht angewendet.

Dies ist sehr viel ein Fehler in iOS 8, und Sie sollten ein Radar (Fehlerbericht) einreichen lassen Apple weiß, dass (noch ein weiteres Stück) iOS 8 einen Fehler hat.

Wenn Sie dies tun, sollten Sie Schnellradar installieren, die Radarnummer verfolgen und auf die vielen anderen ähnlichen Fragen zum Stapelüberlauf mit demselben Problem antworten. Ermutigen Sie andere Personen, einen doppelten Radarbericht einzureichen, der auf Ihr ursprüngliches Problem verweist. Das wird dem Fehler bei Apple mehr Aufmerksamkeit schenken.

Apple hat das wirklich rausgeschmissen. Die zuvor erwähnte Problemumgehung ist in Ordnung, wenn Sie eine andere CIFilter-Unterklasse veranlassen können, das zu tun, was Sie wollen. Andernfalls müssen Sie nur daran herumspielen, das Bild zu kopieren, seine NSData-Darstellung zu speichern oder es auf andere Weise aus dem CIImage-Workflow zu entfernen.

40
lswank

Beim Lesen eines raywenderlich Artikels stellte ich fest, dass das Hinzufügen einer Option zum Kontext, sodass das Rendern in der CPU und nicht in der GPU erfolgt, die Warnung entfernt.

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

5
coco

Für mich trat das Problem auf, wenn ich aus irgendeinem Grund versuchte, CIFilters in iOS8 + zu verwenden?

Ich habe etwas Code hinzugefügt, um die iOS-Version zu überprüfen. Wenn diese Version größer als 7.9.9 ist, würde ich einen CIFilter-Ersatz verwenden, der iOS8 + ähnlich ist: https://stackoverflow.com/a/24083728/2057171

In einem separaten Randbemerkung hatte xCode6 das CIFilter-Framework vollständig aus meinem Projekt entfernt (merkwürdig), aber durch das Zurücksetzen konnte der Absturz nicht behoben werden.

2
Albert Renshaw

Das hat für mich funktioniert:

OBJ-C 

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

Swift

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

Ref: https://stackoverflow.com/a/29872829/3411787

0
Zaid Pathan