Selon le temps d'exécution (32 bits ou 64 bits) et si vous déclarez les variables d'instance (size
et point
) explicitement ou les ont synthétisés par le moteur d'exécution, vous pourrez peut-être y accéder directement à array[0][0]->size
. Ce n'est pas une bonne idée cependant. Il va casser sur les temps d'exécution modernes et est très loin de la méthode Objective-C et rompt l'encapsulation en exposant publiquement les détails d'implémentation de la classe.
En Objective-C 2.0, la pratique correcte consiste à déclarer une propriété pour chaque attribut que vous souhaitez être puclically visible. Ajouter ce qui suit à la déclaration de @interface
Ball
:
@property (assign) int size;
@property (assign) CGPoint point;
Et dans le bloc @implementation
de Ball
:
@synthesize size;
@synthesize point;
Vous pouvez maintenant accéder à la taille comme ((Ball*)array[0][0]).size
. La conversion est requise pour que le compilateur reconnaisse la notation par points en tant qu'accès à une propriété. Il n'est pas obligatoire si vous utilisez les méthodes accesseur (générées automatiquement par @synthesize
): [array[0][0] size]
.
L'exposition publique de variables d'instance n'est PAS un bon moyen d'accomplir cela en Objective-C. Cela fait du code fragile. Je suggère la solution de Barry ci-dessus. –
Tout ce qu'il a demandé était de savoir comment le faire. – micmoo