-presentationLayer
возвращает id
. Вы должны привести его обратно к CALayer:
CATransform3D rotationTransform = [(CALayer*)[self.layer presentationLayer] transform];
Чтобы быть в безопасности, вы должны сначала проверить:
CATransform3D rotationTransform = {0};
CALayer* presentationLayer = (CALayer*)[self.layer presentationLayer];
if( [presentationLayer respondsToSelector:@selector(transform)]) {
rotationTransform = presentationLayer.transform;
}
Но на практике без этой проверки все будет хорошо.
Во втором случае -valueForKey:
также возвращает id
, который вы пытаетесь присвоить struct, что невозможно сделать неявным образом. Вы не можете просто привести указатель объекта в структуру.