¿Hay alguna forma de convertir objetos en object-c de forma muy parecida a como se lanzan los objetos en VB.NET?
Por ejemplo, estoy tratando de hacer lo siguiente:
// 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];
Sin embargo, recibo un error del compilador ya que la propiedad 'list' existe en la clase SelectionListViewController pero no en FieldEditViewController, aunque SelectionListViewController herede de FieldEditViewController.
Esto tiene sentido, pero ¿hay alguna forma de transmitir myEditController a SelectionListViewController para que pueda acceder a la propiedad 'list'?
Por ejemplo, en VB.NET haría:
CType(myEditController, SelectionListViewController).list = listOfItems
¡Gracias por la ayuda!
objective-c
Porra
fuente
fuente
Más ejemplos:
fuente
La conversión de texto en Objective-C es fácil como:
Sin embargo, qué sucede si el primer objeto no es
UIView
y trata de usarlo:Se estrellará. Y es fácil encontrar ese bloqueo para este caso, pero qué pasa si esas líneas están en diferentes clases y la tercera línea se ejecuta solo una vez en 100 casos. ¡Apuesto a que tus clientes encuentran este bloqueo, no tú! Una solución plausible es bloquearse temprano , así:
Esas afirmaciones no se ven muy bien, por lo que podríamos mejorarlas con esta práctica categoría:
Esto es mucho mejor:
PD: para las colecciones, la seguridad de tipo Xcode 7 tiene mucho mejor que la conversión de tipos: genéricos
fuente
Claro, la sintaxis es exactamente la misma que C -
NewObj* pNew = (NewObj*)oldObj;
En esta situación, es posible que desee considerar proporcionar esta lista como un parámetro al constructor, algo así como:
Entonces úsalo así:
fuente
Lanzar para incluir es tan importante como lanzar para excluir a un programador de C ++. La conversión de tipos no es lo mismo que con RTTI en el sentido de que puede lanzar un objeto a cualquier tipo y el puntero resultante no será nulo.
fuente