2012-07-13 10 views
5

uso el siguiente código para conseguir mi punto de vista de mi controlador:¿Cómo obtener una vista de NSViewController si se trata de una clase personalizada?

CollectionItemView *myView = [self view]; 

Esto funciona bastante bien, pero me da la advertencia Incompatible pointer types initializing CollectionItemView __strong with an expression of type NSView. Entiendo por qué obtengo esto, pero ¿está bien ignorarlo o debería sobrescribir la propiedad de visualización?

mandril

Respuesta

2

Si está seguro de que [self view] es CollectionItemView acaba de hacer:

CollectionItemView *myView = (CollectionItemView*)[self view]; 

o (lo que es mejor) que puede utilizar:

id myView = [self view]; 
0

No hay necesidad de sobrescribir eso. troolee ya sugirió dos soluciones de trabajo. Sin embargo, solo para guardar, preferiría codificarlo de manera diferente.

CollectionItemView *myView = nil; 
if ([[self view] isKindOfClass:[CollectionItemView class]) 
    self.view = (CollectionItemView*)[self view]; 

La versión más corta y sin prueba isKindOfClass está bien cuando se sabe con certeza por el contexto que el objeto debe ser de tipo CollectionItemView o cualquiera de sus subclases.

Cuestiones relacionadas