Was könnte dieser Fehler bedeuten?[__NSCFNumber length]: nicht erkannter Selektor an Instanz 0x6d21350 gesendet
[__NSCFNumber length]: unrecognized selector sent to instance 0x6d21350
Hier ist mein Code:
NSString *urlString = @"http://api.twitter.com/1/statuses/update.json";
NSURL *url = [NSURL URLWithString:urlString];
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:status forKey:@"status"];
[params setObject:replyToID forKey:@"in_reply_to_status_id"];
[params setObject:@"1" forKey:@"include_entities"];
// Build the request with our parameter
TWRequest *request = [[TWRequest alloc] initWithURL:url parameters:params requestMethod:TWRequestMethodPOST];
// Attach the account object to this request
[request setAccount:twitterAccount];
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
if (!responseData) {
// inspect the contents of error
NSLog(@"%@", [error localizedDescription]);
self.alert = [[UIAlertView alloc] initWithTitle:@"HTTP error" message:@"I could not connect to the Twitter API." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[self.alert show];
[self.replyDelegate replyRequestSuccessful:NO];
}
else {
/*NSString *responseDataAsString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(responseDataAsString);*/
NSError *error;
NSArray *replyResponse = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error];
if (!replyResponse) {
NSLog(@"%@", [error localizedDescription]);
self.alert = [[UIAlertView alloc] initWithTitle:@"JSON error" message:@"I could not parse the JSON response from the Twitter API." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[self.alert show];
[self.replyDelegate replyRequestSuccessful:NO];
}
else {
[self.replyDelegate replyRequestSuccessful:YES];
}
}
}];
Ich versuchte debuggin, und es stirbt, sobald sie die performRequestWithHandler eintritt. Es geht der Else-Block und stirbt mit dem obigen Fehler ab.
Wahrscheinlicher ist, dass es ein Problem mit seiner Speicherverwaltung gibt, und die Laufzeitumgebung erwartet einen NSString, der nicht mehr vorhanden ist (vor vorzeitiger Aufhebung der Zuweisung), und stattdessen wurde dort eine NSNummer zugewiesen. Wenn Sie absichtlich versuchen, 'length' zu' NSNumber' zu senden, würde der Compiler Sie hoffentlich warnen. – dreamlax
Nicht, wenn die 'NSNumber' in einem Wörterbuch oder über eine andere Schnittstelle übergeben wird, die die Typen löscht. Aber du hast recht, es ist ziemlich wahrscheinlich, dass er etwas zu viel freigibt. Es könnte eine gute Idee sein, mit 'NSZombieEnabled' zu versuchen. – zoul
Was meinen Sie mit "löscht die Typen"? – dreamlax