Вам нужно привести его при использовании точечной нотации из-за простой вещи: в противном случае компилятор обрабатывает его как struct objc_object { Class isa; } *
, у которого нет члена, который вы хотите получить.(На самом деле, чтобы получить доступ к isa
, вам все равно понадобится примечание ->
.)
Это в основном потому, что -[NSArray objectAtIndex:]
возвращает id
, который определяется как:
typedef struct objc_object { Class isa; } *id;
Вам нужно разыграть его, чтобы использовать точечную нотацию, но вам не нужно разыгрывать его для отправки ему сообщений. Мой подход: всегда разыгрывать.:)