добавление объектов в контейнер внутри другого объекта равно нулю с помощью дуги - PullRequest
1 голос
/ 05 января 2012

Я использую ARC от Apple.У меня есть буксирные классы: один, имеющий NSMutableSet, и другой, который я хочу поместить в этот NSMutableSet.

Так что, когда я делаю следующее:

    ContainerClass* contClass = [[ContainerClass alloc] init];
    for(int i = 0;i<10;i++)
    {
        SmallClass* myClass = [[SmallClass alloc] init];
        [myClass setinfo:i];

        [contClass.mySet addObject:myclass];
    }

    for(SmallClass* cls in contClass.mySet){
         NSLog(@"%@", cls);
    } 

результат равен: (null)(ноль) (ноль) (ноль) и т. д.

Означает ли это, что SmallClass выпускается ARC?Как я могу решить это (я не могу сохранить, конечно)?Вызов copy для экземпляра myclass приводит к ошибке, потому что я не реализовал copy для myClass (в пре-ARC-смысле я бы просто сохранил его).

ContainerClass код:

@interface ContainerClass : NSObject {
    NSString* _icon;
    NSMutableSet* _mySet;
}

@property (nonatomic, strong) NSString* icon;
@property (nonatomic, strong) NSMutableSet* mySet;

@end

и реализация:

@implementation ContainerClass

-(id) init
{
    _myset = [[NSMutableSet alloc] init];
    return [super init];
}

@synthesize mySet = _mySet;

@end

1 Ответ

1 голос
/ 05 января 2012

Я думаю, что ваш метод инициализации ContainerClass неправильный. Попробуйте следующее:

-(id)init
{
    if (self = [super init])
    {
      _myset = [[NSMutableSet alloc] init];
    }
    return self;
 }

Надеюсь, это поможет.

...