Они совершенно разные.
Сначала получает указатель объекта из словаря, затем интерпретирует указатель как BOOL
.Это означает, что любой не nil
указатель будет интерпретироваться как YES
, а nil
как NO
.В конкретном примере, так как словари не могут содержать nil
указатели, вы только когда-либо получите YES
из этой строки кода.
Второй получает тот же объект из словаря, затем отправляет сообщение boolValue
к этому объекту.Предположительно, и если объект распознает сообщение, это приведет к BOOL
версии объекта.
В качестве конкретного примера, если словарь содержит NSNumber
, связанный с ключом @"boolValue"
, NSNumber
получит сообщение boolValue
, и, если оно ненулевое, возврат YES
в противном случае NO
.
Поэтому, чтобы ответить на ваш вопрос, вы должны использовать вторую форму.Приведение указателя на BOOL
редко имеет какой-либо смысл.