Ich habe eine Device/Debug-Build, die gut funktioniert. Wenn ich für die Freigabe zu bauen und auf das Gerät verteilen, bekomme ich diesen Fehler:Warum schlägt die Erstellung von Releases fehl und debuggt nicht?
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UILabel setWidth:]: unrecognized selector sent to instance 0x1605a0'
Es wird in cellForRowAtIndexPath vorkommen:
cell.videoName.width = 163.0;
wo Zelle eine benutzerdefinierte UITableViewCell und videoName ein UILabel ist. Warum sollte der Debug-Build funktionieren und die Freigabe fehlschlagen? Die Verteilungserstellung schlägt ebenfalls fehl. Alle sind für Base SDK == iPhone OS 3.0 eingestellt.
Um eine Version auf dem Telefon zu erstellen, ändere ich einfach meine Code-Signierung zu Entwickler. Ich habe auch versucht, die Distribution über iTunes zu erstellen, aber es schlägt mit dem gleichen Fehler fehl.
--- edit ---
ich die Zelle wie das Laden:
static NSString * QuestionCellIdentifier = @"QuestionCellIdentifier";
TopicCellController *cell = (TopicCellController *)[tableView dequeueReusableCellWithIdentifier:QuestionCellIdentifier];
if(cell == nil){
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TopicCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
cell.videoName.width = 163.0;
Zur Laufzeit ist die Zelle des benutzerdefinierten Typ und videoName ist nicht gleich Null. Wenn ich die letzte Zeile (Einstellungsbreite) entferne, funktioniert es gut.
--- Edit: Neuentdeckung ---
Ich habe festgestellt, dass anstatt Breite aufrufen, kann ich dies tun und es funktioniert in Release:
cell.videoName.frame = CGRectMake(10, 10, 100, 30);
Das ist wirklich nicht machen irgendein Sinn.
Ich habe in bearbeitet einige zusätzliche Informationen zu Ihren Kommentaren. Vielen Dank. – 4thSpace