Вам не нужно передавать объект для назначения в качестве делегата акселерометра, если вы просто хотите назначить «себя». Вы фактически назначаете контроллер представления в качестве делегата (в контроллере представления "self" является контроллером представления).
Возможно, вам не нужно несколько методов init для класса TestAccel. Это всего лишь рекомендация. Конечно, не забудьте сначала вызвать [super init], если вы используете только один метод. Например:
- (id) init {
if (self = [super init]) {
// other TestAccel init stuff here
accel = [UIAccelerometer sharedAccelerometer];
accel.delegate = self; // assign self as delegate
}
return self;
}
И в контроллере представления вы должны выделить и инициировать объект TestAccel (не объект Acc):
accel = [[TestAccel alloc] init];
Кроме того, TestAccel должен реализовывать протокол UIAccelerometerDelegate, а ваш контроллер представления не должен.
UPDATE
Используйте лучший метод кодирования для установки себя в методе init.