Pergunta

Por exemplo:

@interface Fraction: NSObject {
...

Quando não NSObject ser usado e é NSObject a classe pai final para todas as outras classes?

Por favor, sinta-se livre para me corrigir em qualquer terminologia errada usado.

Foi útil?

Solução

Se eu estava escrevendo uma subclasse de NSView, eu ia escrever:

@interface Fraction: NSView {...

porque minha classe é herdada de NSView. Classes em Objective-C herdam apenas uma única classe pai. Como você trabalha o seu caminho até a cadeia de NSView (a sua classe pai, NSResponder), você teria que encontrar, eventualmente, herda de NSObject.

Eu não tenho certeza sobre a segunda parte da sua pergunta. Eu acho que todas as classes em quadros de cacau da Apple finalmente herdar de NSObject, mas não citar-me sobre isso. Não há nenhuma razão, em Objective-C, por que não poderia haver outros objetos raiz (caso contrário, Objective-C só seriam usados ??em sistemas Apple). No entanto, em Cocoa, NSObject é a raiz.

Outras dicas

Em qualquer app de cacau, se você examinar a árvore de classe de tempo de execução, você encontrará cinco classes de raiz:. NSObject, objeto, NSProxy, NSMessageBuilder, e NSZombie

A maioria dos objetos comuns na sua aplicação vai ser descendente de NSObject. Objecto é a classe raiz original a partir dos primeiros dias de Objective-C, e foi substituído por NSObject quando seguinte foi o desenvolvimento da Empresa Objectos Quadro.

NSMessageBuilder é usado pelo tempo de execução para o encaminhamento de mensagens. NSProxy é usado pela implementação de objetos distribuídos para lidar com empacotamento mensagens para enviar aos objetos em outros processos ou mesmo em outros hospedeiros. NSZombie é uma classe que é usado para depurar vazamentos de memória.

Cocoa tem duas classes de raiz:. NSObject e NSProxy

NSObject é a classe raiz de quase todos Cacau objetos.

NSProxy é uma superclasse abstrata que define uma API para objetos que agem como stand-ins para outros objetos ou para objetos que não existem ainda, e é a classe raiz para classes como NSDistantObject.

Ambas as classes implementar o protocolo NSObject.

Também é possível escrever suas próprias classes Objective-C que não têm uma classe raiz, mas você provavelmente nunca fazer isso, e você não seria capaz de usá-lo com cacau para muita coisa, a menos que você também implementou o protocolo NSObject, e mesmo assim seria de uso duvidoso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top