2017-02-23 7 views
0

Zugabe, ich bin Art von neu in Obj-c, und ich habe ein eigenartiger Sturz mit dem folgenden Code passiert:Objective-C-Programm stürzt ab, wenn also Objekt NSMutableArray

- (NSMutableArray*)followNonBlackPixels:(int)startX withY:(int)startY 
{ 
    NSMutableArray* result; 
    NSMutableArray* adjacents = [self getAdjacents:startX withY:startY]; 

    int r = 0; 
    int i = 0; 
    int tempX; 
    int tempY; 
    int max = [adjacents count]; 
    CGPoint tempPoint; 
    while(i < max) 
    { 
     int tempX = (int)[[adjacents objectAtIndex:i] CGPointValue].x; 
     int tempY = (int)[[adjacents objectAtIndex:i] CGPointValue].y; 

     result = [self getAdjacents:tempX withY:tempY]; 

     for(r = 0; r < [result count]; r++) 
     { 
      tempPoint = [[result objectAtIndex:r] CGPointValue]; 
      //[adjacents addObject:[NSValue valueWithCGPoint:CGPointMake(tempPoint.x, tempPoint.y)]]; 
     } 

     i++; 
     max = [adjacents count]; 
    } 

    return adjacents; 
} 

Dieser Code fein läuft, Aber sobald ich die Zeile auskommentiere, in der ich ein Objekt zum "adjacents" NSMutableArray hinzufüge, stürzt das Programm ab.

Die Unterschrift der getAdjacents Methode ist wie folgt:

- (NSMutableArray*)getAdjacents:(int)startX withY:(int)startY; 

Ich bin einen Cordova Plugin unter Windows zu entwickeln, damit ich habe keine Debug-Informationen zur Verfügung zu stellen ... Aber vielleicht wäre mein Fehler klar sein, zu einem erfahrenen obj-c Entwickler?

Vielen Dank für Ihre Hilfe!

+1

Sie haben keine Crash-Protokoll? Meine Vermutung ist, dass "adjacents" tatsächlich ein 'NSArray' und kein' NSMutableArray' ist, aber das ist reine Spekulation. – Larme

+1

Sind Sie sicher, dass getAdjacents ein * mutable * -Array zurückgibt? Trotz der Signatur kann das zurückkehrende Objekt immer noch nur ein NSArray sein. –

+0

Können Sie Ihr Crash-Protokoll posten, damit es leicht zu finden ist, wo das Problem liegt? – CodeChanger

Antwort

1

Wenn Sie Ihren Code auf die folgenden ändern,

NSMutableArray *adjacents = [[NSMutableArray alloc] initWithArray:[[self getAdjacents:startX withY:startY] mutableCopy]]; 
+0

Das behebt das Problem nicht ... Ich habe es versucht, aber trotzdem stürzt es ab. – Scalpweb

+0

Ist es möglich, mir den Code für 'getAdjacents' zu zeigen, nur damit ich alles debugge? Die überraschende Verwendung von "mutableCopy" funktionierte nicht. Könntest du die Fehlermeldung posten, sollte sie nur in deiner Konsole sein, vielleicht 'unerkannter Selektor' oder so ähnlich. – JingJingTao

+0

Ich habe keinen Zugriff auf eine Konsole, wie ich unter Windows entwickeln. Es ist ein Cordova-Plugin, das mit Telerik CLI kompiliert wurde. – Scalpweb