2010-07-30 2 views

Répondre

2

Les classes ne sont pas conformes aux classes, elles sont conformes à protocols, qui sont essentiellement des listes de messages auxquels une classe peut répondre. Si une classe est conforme à un protocole, elle doit répondre à tous les messages non facultatifs répertoriés dans l'interface de protocole.

De même, il n'y a pas vraiment de différence entre une classe Cocoa et une classe Objective-C. Cocoa est un framework Objective-C, donc toutes ses classes sont des classes Objective-C. Si vous demandez si des classes comme UIView font partie du langage ou du framework: Toutes les classes avec lesquelles vous interagissez normalement dans une application Cocoa/Cocoa Touch proviennent du framework. Les classes natives du moteur d'exécution norme Objective-C offre sont:

  • objet
  • Protocole
  • Liste

Vous pouvez aller à/usr/include/objc si vous voulez voir les en-têtes pour toi. Aucun d'entre eux n'est utilisé dans un programme Cocoa ou Cocoa Touch normal. Vous utilisez des protocoles (comme mentionné ci-dessus), mais ne vous référez pas directement à la classe directement.

+0

J'ai vu des choses conformes à NSObject. N'est-ce pas un objet et non un prototype? –

+0

@awakeFromNib: C'est les deux. Il existe une classe NSObject et un protocole nommé NSObject auquel la classe est conforme. Classe: http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html Protocole: http://developer.apple.com/mac/library/documentation /Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intf/NSObject – Chuck

+0

Que signifie "Liste"? ne peut pas le trouver dans mon runtime – user102008

1

La conformité ou la conformité plus précise à un protocole est simplement la manière dont l'Objective C spécifie un comportement que la classe devrait implémenter, similaire à une interface java. UIView fait partie du framework UIKit, il s'agit donc d'une classe Cocoa.

+0

Non, UIView fait partie du framework UIKit, il s'agit donc d'une classe * Cocoa Touch *. UIKit ne fait pas partie de Cocoa. –

+0

Oui, je suis corrigé .... – ennuikiller

1

La conformité est plus ou moins la même que l'assignabilité. Mais je n'ai jamais vu ce second terme utilisé pour cela.

Si vous pouvez affecter un objet à une variable b, alors a est conforme à b.

+1

Sauf que dans Objective-C, vous pouvez assigner un pointeur à une instance de n'importe quelle classe à n'importe quelle variable pointeur, y compris une variable déclarée comme contenant un pointeur vers une instance d'une classe complètement indépendante . –