В зависимости от того, какое время выполнения (32-разрядное или 64-разрядное) и от того, объявили ли вы переменные экземпляра (size
и point
) явным образом или синтезировали их во время выполнения, вы можете получить к ним доступ напрямую в array[0][0]->size
. Однако это не очень хорошая идея . Он сломается в современных средах выполнения и очень не способом Objective-C и нарушает инкапсуляцию, публично раскрывая детали реализации класса.
В Objective-C 2.0 правильной практикой является объявление свойства для каждого атрибута, который вы хотите, чтобы он был политически видимым. Добавьте следующее к объявлению Ball
@interface
:
@property (assign) int size;
@property (assign) CGPoint point;
А в блоке @implementation
Ball
:
@synthesize size;
@synthesize point;
Теперь вы можете получить доступ к размеру, например ((Ball*)array[0][0]).size
. Приведение требуется, чтобы компилятор распознал точечную запись как доступ к свойству. Это не требуется, если вы используете методы доступа (которые автоматически генерируются @synthesize
): [array[0][0] size]
.