2015-07-14 9 views
0

Я разработчик программного обеспечения Jr, могу ли я просто изменить (без знака) на (NSUInteger) или создать проблемы позже?Можно ли изменить (без знака) на (NSUInteger) или создать проблемы?

- (unsigned)retainCount 
{ 
    return UINT_MAX; //denotes an object that cannot be released 
} 

предупреждение сказал

MKStoreManager.m:88:1: Conflicting return type in implementation of 'retainCount': 'NSUInteger' (aka 'unsigned long') vs 'unsigned int' 

Я нашел предыдущее определение

- (NSUInteger)retainCount OBJC_ARC_UNAVAILABLE; 

ответ

2

Ваш метод должен возвращать NSUInteger, потому что это, как метод retainCount определяется в NSObject.

Ошибка вызвана значением, которое вы пытаетесь вернуть. Вместо того, чтобы возвращать UINT_MAX, вы должны вернуть NSUIntegerMax.

Основной тип для NSUInteger изменяется в зависимости от того, построено ли для 32 или 64 бит. Соответственно, значение NSUIntegerMax также изменяется в соответствии с типом.

- (NSUInteger)retainCount 
{ 
    return NSUIntegerMax; //denotes an object that cannot be released 
}