versiones plataforma objective framework ejemplos compiler caracteristicas objective-c cocoa

objective c - plataforma - ¿Debería llamar a[super awakeFromNib]?



versiones de objective c (3)

Si implemento mi propia versión de awakeFromNib , ¿debo llamar a [super awakeFromNib] al final de mi método?


awakeFromNib para UIKit (iOS) :

Debe llamar a la implementación súper de awakeFromNib para dar a las clases principales la oportunidad de realizar cualquier inicialización adicional que necesiten. Aunque la implementación predeterminada de este método no hace nada, muchas clases de UIKit proporcionan implementaciones no vacías. Puede llamar a la súper implementación en cualquier momento durante su propio método awakeFromNib.

awakeFromNib para awakeFromNib (Mac) :

(Ya no es cierto, si usa OS X 10.6 o superior)

Debería llamar a la súper implementación de awakeFromNib solo si sabe con certeza que su superclase proporciona una implementación. Debido a que el Kit de aplicaciones no proporciona una implementación predeterminada del método awakeFromNib, la invocación a super resultados en una excepción si la clase principal no la implementa. Las clases cuya clase primaria inmediata es NSObject o NSView no necesitan llamar a la súper implementación. Para cualquier otra clase, puede usar el método instancesRespondToSelector: class de NSObject para determinar si la clase padre responde a awakeFromNib y llama al método si lo hace.


Si deberías.

Implementé arrastrar y soltar y todo estaba funcionando hasta que agregué mi propio awakeFromNib y luego la función de arrastrar y soltar, que nunca se llamó a TypeToProcess.

No fue hasta que agregué [super awakeFromNib]; como la última declaración en mi propio awakeFromNib de que la función de arrastrar y soltar whichTypeToProcess se llamaba de nuevo y arrastrar y soltar comenzó a funcionar de nuevo.

FYI - Esto fue en una aplicación MacOSX.


La documentación lo cubre perfectamente.

Si pretendía preguntar sobre Cocoa Touch, no tiene tanta suerte: la documentación de UIKit no responde la pregunta definitivamente en ninguna parte que pueda encontrar. Lo mejor que puedo sugerir sería seguir las mismas reglas que en Cocoa.