Вопрос по настройке ключа NSDictionary - PullRequest
0 голосов
/ 08 августа 2011

У меня есть класс с именем A;

В Ah

@interface A : NSObject {

    NSString *str;
    NSNumber *num;

}

@property (nonatomic,retain) NSString *str;
@property (nonatomic,retain) NSNumber *num;

A является суперклассом B.

В Bh

@interface B : A {

    NSString *BStr;

}

@property (nonatomic, retain) NSString *BStr;

@end

Теперь мне нужно установить объект B как ключ NSDictionary.

- (void)viewDidLoad {
    [super viewDidLoad];
    B *key = [[B alloc] init];
    NSDictionary *dict = [NSDictionary dictionaryWithObject:@"object" forKey:key];
}

Тогда класс B должен реализовать протокол NSCopying.

Я хотел бы знать, правильный ли этот код?Должен ли я что-то сделать со свойством класса A?

В Бм

- (id) copyWithZone:(NSZone *)zone {
    B *copy = [[[self class] allocWithZone:zone] init];
    copy.BStr = [[self.BStr copyWithZone:zone] autorelease];
    return copy;
}

Спасибо!

1 Ответ

0 голосов
/ 08 августа 2011

Вы также должны копировать str и num в copyWithZone:

copy.str = [[self.str copyWithZone:zone] autorelease];
copy.num = [[self.num copyWithZone:zone] autorelease];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...