Отладка NSoperation BAD ACCESS в графическом контексте - PullRequest
0 голосов
/ 22 марта 2010

Я попробовал все, чтобы отладить этот, но я не могу до конца разобраться.

Этот код находится в подклассе NSOperation, который обрабатывается из очереди:

(Границы - это массив NSAR, содержащий 5 объектов UIimage)


NSMutableArray *images = [[NSMutableArray alloc] init];

for (unsigned i = 0; i < 5; i++)
    {       

    CGSize size = CGSizeMake(60, 60);
    UIGraphicsBeginImageContext(size);

    CGPoint thumbPoint = CGPointMake(6, 6);

    [controller.image drawAtPoint:thumbPoint];

    CGPoint borderPoint = CGPointMake(0, 0);
    [[borders objectAtIndex:i] drawAtPoint:borderPoint];

    [images addObject:UIGraphicsGetImageFromCurrentImageContext()];

    UIGraphicsEndImageContext();

}

[images release];

Код работает в большинстве случаев нормально, но когда я нажимаю на iphone с помощью доступа к подпредставлениям и нажимаю множество кнопок в интерфейсе, я либо получаю это исключение, которое захвачено операцией:

Exception Load view: *** -[NSCFArray insertObject:atIndex:]: attempt to insert nil

или я получаю это:

Program received signal:  “EXC_BAD_ACCESS”.

Исключение вызвано тем, что UIGraphicsGetImageFromCurrentImageContext () возвращает nil.

Я не знаю, как отлаживать EXC_BAD_ACCESS, но я предполагаю, что эта ошибка (фактически обе эти ошибки) вызвана нехваткой памяти. Отладчик останавливается на линии:

    [controller.image drawAtPoint:thumbPoint];

Как я уже упоминал, я поймал исключение в ловушку, чтобы жить с этим, но EXC_BAD_ACCESS более серьезен.

Если это связано с памятью, как я могу узнать, и можно ли увеличить объем памяти, доступной для NSOperation?

1 Ответ

1 голос
/ 22 марта 2010

NSOperationQueue обрабатывается в основном потоке или в фоновом потоке? Если последнее, вы не сможете делать какие-либо графические контекстные вещи (или иногда вы будете иногда, вы не будете).

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