NSSet setByAddingObjectsFromSet сохранить количество - PullRequest
0 голосов
/ 12 мая 2011

Я думал, что начинаю зависать от управления памятью в target-c, но меня немного смущает счет сохранения, который я получаю от добавления наборов вместе. API для setByAddingObjectsFromSet говорит:

Returns a new set formed by adding the objects in a given set to the receiving set.

- (NSSet *)setByAddingObjectsFromSet:(NSSet *)other

Так что я немного озадачен этим:

NSSet* tom = [[NSMutableSet alloc] initWithCapacity:1];
NSSet* dick = [[NSMutableSet alloc] initWithCapacity:1];
NSSet* harry = [tom setByAddingObjectsFromSet:dick];

printf("tom   retainCount: %d \n", [tom retainCount]);
printf("dick  retainCount: %d \n", [dick retainCount]);
printf("harry retainCount: %d \n", [harry retainCount]);

Который производит:

tom   retainCount: 1 
dick  retainCount: 1 
harry retainCount: 2 

Если setByAddingObjectsFromSet возвращает новый набор, почему retainCount 2? Должен ли я выпустить его дважды ?! Что я неправильно понял?

Большое спасибо.

1 Ответ

2 голосов
/ 12 мая 2011

Тебе совсем не обязательно его выпускать. На самом деле, вы не должны выпускать его. Вам это не принадлежит. Эти остатки принадлежат Какао, и ответственность за это лежит на Какао - они не являются вашей заботой. (Это одна из многих причин, почему смотреть на retainCount нецелесообразно.)

...