Domanda

Ho il seguente codice che sta producendo questo errore. Non riesco a capire il motivo per cui il messaggio subarrayWithRange viene inviato ad una stringa? Quando è chiaramente un array?

static const int kItemsPerView = 20;
NSRange rangeForView = NSMakeRange( page * kItemsPerView, kItemsPerView );

NSMutableArray *temp = [[APP_DELEGATE keysArray] mutableCopyWithZone:NULL]; 
NSArray *itemsForView = [temp subarrayWithRange:rangeForView];

for (int loopCounter = 0;loopCounter < r*c;loopCounter++){
    NSLog(@"%i: %@ ", loopCounter, [itemsForView objectAtIndex:loopCounter]);
}

Errore:

-[NSCFString subarrayWithRange:]: unrecognized selector sent to instance 0x6b071a0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: [NSCFString subarrayWithRange:]:

Grazie

È stato utile?

Soluzione

Questi tipi di errori sono di solito la memoria-gestione-related. In sostanza, si sta inviando un messaggio a un indirizzo che è ora occupato da qualche altro oggetto, perché il precedente occupante ha inaspettatamente scomparso. Dal momento che lo spazio indirizzo potrebbe essere occupato da qualsiasi cosa, basta chiedere capita di essere un NSCFString qualcosa a cui non risponde.

Se si sospende il diritto debugger dopo aver creato l'array temporaneo, cosa vedi assegnato alla temperatura? Sto indovinando c'è qualcosa che non abbastanza di destra con qualunque rendimenti -keysArray. Si potrebbe desiderare di controllare due volte come la memoria è gestita in qualunque questo dovrebbe tornare. Con il nome, suppongo la vostra applicazione delegato dispone di una serie chiamata "keysArray" come una variabile di istanza. Forse quella di non essere adeguatamente mantenuti quando viene creato o assegnato?

Altri suggerimenti

Così ho avuto questo. Ho fatto qualcosa di stupido. Ho assegnato l'UITextView in una stringa, invece di essa la proprietà text. vale a dire:

myObj.txtbxThing = [NSString stringWithFormat:@"%@", stuffString];

invece che:

myObj.txtbxThing.text = [NSString stringWithFormat:@"%@", stuffString];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top