Проходя через пример приложения кода для iPhone, я обнаружил пару методов отправки / получения, которые фактически имели одинаковые определения сигнатур, за исключением типов значений, связанных с одной из переменных.
Из заголовка:
- (void)receivedData: (unsigned char *)data length:(NSUInteger)len;
- (void)sendData: (uint8_t*) data length:(NSUInteger) len;
Эти методы используются в качестве оболочек для процесса отправки / получения, который фактически передает указатель на массив byte
данных, записываемых в потоки данных и из них. Мне показалось, что эти сигнатуры методов немного любопытны, и, поскольку я новичок в разработке Cocoa / Cocoa Touch, я решил проверить определение типа uint8_t
. Я обнаружил, что uint8_t
определяется как unsigned char
в пределах stdint.h
и, следовательно, переменные data
для этих методов абсолютно одинаковы. По крайней мере, так обстоит дело с stdint.h
, который связан в XCode 4.2.
Однако, проведя небольшое исследование относительно типа uint8_t
, я нашел этот вопрос относительно использования uint8_t
против unsigned char
. Похоже, консенсус заключается в том, что довольно часто эти два типа значений абсолютно одинаковы, но в некоторых реализациях стандартных библиотек C они могут отличаться. Поэтому не стоит полагать, что они будут представлять собой данные одного типа при создании переносимого кода.
С учетом вышесказанного, можно ли предположить из среды программирования Apple / Objective-C, что uint8_t
будет таким же, как unsigned char
, или я должен следовать тем же советам, что и в приведенном выше вопросе?
Может показаться, что это довольно требовательный вопрос, но, поскольку я могу интегрировать библиотеки, в которых этот тип кодирования кажется немного распространенным, в личную кодовую базу, которую можно использовать в нескольких средах Apple (для довольно через несколько лет) я хотел бы получить дополнительные комментарии.