2012-04-09 9 views
0

Warnung: vervollständigen Sie Newbie Xcode Frage.Erstellen Mitglied-Objekt in Xcode: Programm empfangene Signal: "SIGABRT"

In MainViewController.h Ich habe die folgende Zeile:

IBOutlet WorkItem * m_WIone;

Ich habe eine Klasse namens WorkItem erstellt, die von UILabel geerbt wird. Die obige Zeile ist so, dass ich m_WIone (die schließlich zu einem Array von solchen Objekten wird) als Membervariable in MainViewController verwenden kann.

Ich habe verschiedene Möglichkeiten ausprobiert WorkItem Methoden aufrufen und schließlich ließ sich auf:

[m_WIone Reset];

wobei Reset eine WorkItem Methode ist. Die Methode wird in WorkItem.h wie folgt deklariert:

- (void) Reset;

und in WorkItem.m als:

- (void) Reset {}

Mit oder ohne Inhalt in diesem Verfahren wird die App immer stürzt mit:

Thread 1: Programm empfangenes Signal: "SIGABRT".

In der Protokollierung, lese ich:

app aufgrund nicht abgefangene Ausnahme 'NSInvalidArgumentException', Grund beenden: '- [UILabel Reset]: Unbekannter Selektor zum Beispiel 0x6a5f9f0 gesendet'

Wie kann ich das lösen? Ändere ich diese Membervariable überhaupt richtig? (Trotz Trawling durch StackOverflow kann ich die Lösung nicht finden.)

+0

Zaph: welchen Code soll ich hinzufügen, der hier nicht enthalten ist? Ich denke, ich habe den gesamten relevanten Code hinzugefügt, mit Ausnahme der 'include'-Anweisung. Gibt es etwas Spezifisches von zB der 'WorkItem'-Klasse, die ich hinzufügen sollte? – Wikis

+0

Der Code für WorkItem, die Instanziierung von m_WIone, die Methode 'Reset'. Warum 'IBOutlet', was erwarten Sie von dieser Linie? – zaph

+0

Danke, Zaph, aber jetzt habe ich eine großartige Antwort. – Wikis

Antwort

2

Haben Sie Ihre benutzerdefinierte Klasse für die NIB angegeben? Es scheint, als ob ein Widget in XCodes Interface Builder Ihre benutzerdefinierte Klasse verwenden soll. Nur die Standardklasse (UILabel) wird anstelle Ihrer benutzerdefinierten Klasse instanziiert.

Klicken Sie auf die UILabel, die Sie als Steckdose verwenden, und ändern Sie die Klasse (der Screenshot hier ist für UITableView, aber es sollte für UILabel dasselbe funktionieren).

Custom Class Property

Mit diesem wird gesagt, es gibt Alternativen zu dem, was Sie zu tun versuchen. Anstatt nur UILabel zu verwenden (was Sie eventuell planen, ein Array von ihnen zu erstellen). Warum verwenden Sie kein UITableView und passen Zellen an das an, was Sie für richtig halten (da UITableViews für die Anzeige von Objektlisten optimal ist)?

+0

Danke Jeff. Ich habe UITableViews vor einiger Zeit geprüft und abgelehnt, aber angesichts Ihres Vorschlags werde ich es noch einmal überdenken! – Wikis

Verwandte Themen