Я думал, что начинаю зависать от управления памятью в 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? Должен ли я выпустить его дважды ?! Что я неправильно понял?
Большое спасибо.