2015-07-22 2 views
2

Можно ли переопределить хэш внутри класса как NSNumber вместо NSUInteger? Такие, как это:Переопределить `hash` как NSNumber

@interface MyObject : NSObject 
@property (nonatomic, readonly) NSNumber *hash; 
@end 

@implementation MyObject 
@synthesize hash = _hash; 
@end 

ответ

4

Нет, hash объявляется протоколом NSObject и, как ожидается, вернуть NSUInteger.

Вы могли бы сделать что-то подобное, хотя:

@interface MyObject : NSObject 
@private 
    NSNumber *_hash; 
@end 

@implementation MyObject 

- (NSUInteger)hash 
{ 
    return [_hash unsignedIntegerValue]; 
} 

@end 
+0

Есть ли способ setHash с помощью NSNumber? Отображение пытается установить хэш этого объекта с использованием NSNumber. – brdu

+2

@brdu: 'NSObject' не определяет' setHash: ', поэтому, я думаю, вы могли бы реализовать этот метод любым способом. – mipadi

+0

@mipadi Вы * можете *, но, как правило, очень плохая идея изменить хэш экземпляра после его создания. – bbum

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