освободить объект в блоке внутри блока - PullRequest
1 голос
/ 03 сентября 2011

Это нормально делать следующие блоки? Я не уверен, что освобождение объекта, который находится за пределами блока, это нормально? В моем примере ниже venObject и newPoll являются объектами вне области внутреннего блока.

 [query findObjectsInBackgroundWithBlock:^(NSArray * objects, NSError * error){
        PFObject * venObject;
        if (!error){
                venObject = [[PFObject alloc] initWithClassName:@"Venue"];
                [venObject setObject:self.venue.identification forKey:@"fid"];
            }

            PFObject * newPoll = [[PFObject alloc] initWithClassName:@"Poll"];

            [newPoll saveInBackgroundWithBlock:^(BOOL succeeded, NSError * error){
                if (succeeded){
                      [venObject release]; //is this fine?
                      [newPoll release]; //is this fine?
                }
            }];
        }

1 Ответ

0 голосов
/ 03 сентября 2011

Да, он должен работать, хотя я считаю, что он более чист: autorelease объекты в той же области, в которой вы их создали.

Кроме того, в вашем коде много ошибок.Если error не является nil, venObject будет неинициализированным указателем, который может указывать куда угодно.Вызов release позже по этому указателю может привести к сбою.И вы не освобождаете объекты, если сохранение не удается, что приводит к утечке памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...