2010-04-05 1 views
4

Что-то, что вызвало мой интерес, - это определение типа BOOL Objective-C.Почему тип данных Objective-C Boolean определяется как подписанный символ?

Почему это определяется как signed char (что может вызвать неожиданное поведение, если значение больше 1 байт в длину назначается к нему), а не как int, как С делает (намного меньше запаса для ошибки: нулевое значение false, имеет значение, отличное от нуля)?

Единственная причина, по которой я могу думать, это создание оптимизационного хранилища Objective-C, потому что char будет использовать меньше памяти, чем int. Пожалуйста, кто-нибудь может просветить меня?

+1

Просто не присваивайте ему ничего, кроме YES и NO, а когда вы его протестируете, просто проверьте, установлено ли оно или нет. Это руководство, поэтому не должно быть никаких проблем с тем глупым типом, который они выбирают по любой глупой причине, которую они выбрали;) –

ответ

6

Помните, что Objective-C был создан еще в 1980-х годах, когда сохранение байтов действительно имеет значение.

Как указано в комментарии, если вы придерживаетесь значений ДА и НЕТ, все будет хорошо.

+0

Это отличный момент. Кристофер, со всем относительно недавним вниманием к разработке iPhone/iPad, легко забыть о том, что Objective -C намного старше, чем платформы, которые в настоящее время реализуются. –

Смежные вопросы