Действительно надеясь, что кто-то может помочь мне разобраться, почему отправка объектов, являющихся членами массива, кажется самой сложной вещью в мире в Obj-C.
Вот настройка: у меня есть класс автомобиля. У автомобиля есть два объекта участника, двигатель и шина (из которых четыре). Затем у меня есть NSArray (также член автомобиля), инициализированный для хранения объектов шин. Я сделал это, потому что я не могу понять, как написать или синтезировать методы получения для простого объявления как шины Tire * [4] (поэтому я должен использовать NSArray и использовать objectAtIndex.
Вот класс автомобиля:
#import "Tire.h"
#import "Engine.h"
@interface Car : NSObject
{
Engine *engine;
Tire *tire1;
Tire *tire2;
Tire *tire3;
Tire *tire4;
NSArray *tirearray;
}
@property (nonatomic, copy) id engine;
@property (nonatomic, copy) id tire;
@property (nonatomic, copy) id tirearray;
@implementation Car
@synthesize engine;
@synthesize tire;
@synthesize tirearray;
- (void) print {
NSLog(@"%@", engine);
}
- (id) init {
if (self = [super init]) {
engine = [Engine new];
tire1 = [[tire alloc] init];
tire2 = [[tire alloc] init];
tire3 = [[tire alloc] init];
tire4 = [[tire alloc] init];
tirearray = [NSArray arrayWithObjects: tire1, tire2, tire3, tire4, nil];
}
return (self);
}
Тогда главное:
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Car *car = [[Car alloc] init];
[[car.tirearray objectAtIndex:0] setPressure: 32];
[pool drain];
return 0;
}
Что я пытаюсь сделать, так это выяснить, как отправлять сообщения объектам в массиве! Это все, что я хочу сделать. Вышеприведенный код создает, но возвращает необработанное исключение «NSRangeException», причина: «*** - [NSArray objectAtIndex:]: index (0) за пределами границ (0)» !!!
Как вы знаете, давление - это просто переменная-член класса шин, и методы получения были синтезированы.
Затем я хочу напечатать что-нибудь на консоль, например, «Давление в шине X равно X PSI».
Это сводит меня с ума! Это должно быть просто! Ааааа.
Заранее спасибо!