Я тестировал с помощью object = [[NSObject alloc] init], но получал смешанные результаты.
Ответ 1
Указатель больше, чем BOOL, поэтому, когда вы бросаете его, он будет усекать и принимать только 8 наименее значимых бит указателя и сделать его BOOL. Если эти биты все равны нулю, это эквивалентно NO.
Итак, чтобы ответить на ваш вопрос, нет, это не так (ну иногда это будет в зависимости от значения указателя)
Вот пример использования Xcode 5.1.1 на 32-битной архитектуре:
void* p = (void*)0xfeeeff00;
BOOL b = (BOOL)p;
NSLog(@"p=%08x (%lu), b=%08x (%lu)", (uint32_t)p, sizeof p, (uint32_t)b, sizeof b);
Он печатает:
p=feeeff00 (4), b=00000000 (1)
Ответ 2
Какова фактическая цель вашего метода?
Если просто проверить, нет ли ни одного объекта, почему бы не сделать это так: