Gibt es eine Möglichkeit, Objekte in Objective-C umzuwandeln, ähnlich wie Objekte in VB.NET umgewandelt werden?
Zum Beispiel versuche ich Folgendes zu tun:
// create the view controller for the selected item
FieldEditViewController *myEditController;
switch (selectedItemTypeID) {
case 3:
myEditController = [[SelectionListViewController alloc] init];
myEditController.list = listOfItems;
break;
case 4:
// set myEditController to a diff view controller
break;
}
// load the view
[self.navigationController pushViewController:myEditController animated:YES];
[myEditController release];
Es wird jedoch ein Compilerfehler angezeigt, da die Eigenschaft 'list' in der SelectionListViewController-Klasse vorhanden ist, jedoch nicht im FieldEditViewController, obwohl SelectionListViewController von FieldEditViewController erbt.
Dies ist sinnvoll, aber gibt es eine Möglichkeit, myEditController in einen SelectionListViewController umzuwandeln, damit ich auf die Eigenschaft 'list' zugreifen kann?
Zum Beispiel würde ich in VB.NET Folgendes tun:
CType(myEditController, SelectionListViewController).list = listOfItems
Danke für die Hilfe!
objective-c
Billy
quelle
quelle
Mehr Beispiele:
quelle
Typografie in Objective-C ist einfach wie folgt:
Was passiert jedoch, wenn das erste Objekt nicht vorhanden ist
UIView
und Sie versuchen, es zu verwenden:Es wird abstürzen. Und es ist leicht, einen solchen Absturz für diesen Fall zu finden, aber was ist, wenn diese Zeilen in verschiedenen Klassen sind und die dritte Zeile in 100 Fällen nur einmal ausgeführt wird. Ich wette, Ihre Kunden finden diesen Absturz, nicht Sie! Eine plausible Lösung ist ein frühzeitiger Absturz wie folgt :
Diese Behauptungen sehen nicht sehr gut aus, daher könnten wir sie mit dieser praktischen Kategorie verbessern:
Das ist viel besser:
PS Für Sammlungen Typensicherheit Xcode 7 hat eine viel bessere als Typecasting - Generika
quelle
Sicher, die Syntax ist genau die gleiche wie bei C -
NewObj* pNew = (NewObj*)oldObj;
In dieser Situation möchten Sie möglicherweise erwägen, diese Liste als Parameter an den Konstruktor anzugeben, z. B.:
Dann benutze es so:
quelle
Das Casting für den Einschluss ist für einen C ++ - Programmierer genauso wichtig wie das Casting für den Ausschluss. Das Typumwandeln ist nicht dasselbe wie bei RTTI, da Sie ein Objekt in einen beliebigen Typ umwandeln können und der resultierende Zeiger nicht Null ist.
quelle