Кастинг объектов в Какао на ощупь - PullRequest
1 голос
/ 07 июня 2009

Звучит как простой, но я нигде не могу найти решение.

Как вы кастуете объекты в какао-объективе c для iPhone?

Я пытаюсь получить длину строки в объекте nsuinteger следующим образом:

        NSUInteger *phoneNumberLength = [phoneNumber length];

Я получаю предупреждение, что инициализация делает указатель из целого числа без приведения.

Как я могу разыграть этот и все объекты в целом?

Ответы [ 3 ]

6 голосов
/ 07 июня 2009

NSUInteger - это int, а не объект. Вы не хотите указатель на него, вероятно, поэтому просто используйте

NSUInteger phoneNumberLength = [phoneNumber length];
3 голосов
/ 07 июня 2009

коббал и Энди правы, но в будущем, если вы хотите разыграть объект, вы просто сделаете Object1 *obj = (Object1 *)object2;

1 голос
/ 07 июня 2009

коббал прав, NSUInteger - примитивный тип, а не указатель. В этом случае метод длины просто возвращает тип примитива, а не указатель на примитив. Смотрите этот заголовочный файл:

(расположение может отличаться в зависимости от того, где вы установили SDK)

/ Разработчик / Платформы / iPhoneOS.platform / Разработчик / SDKs / iPhoneOS2.2.1.sdk / System / Library / Frameworks / Foundation.framework / Headers / NSObjCRuntime.h

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...