1

Что-то должно быть не так с этим кодом прямо здесь:У меня проблема с управлением памятью здесь?

+ (UIImage*)captureView:(UIView *)theView { 
    UIGraphicsBeginImageContext(theView.frame.size); 
    [theView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

Когда я использую, что Xcode бросает мне это сообщение об ошибке:

таНос: * ошибка для объекта 0x103f000: указатель Освободившись не было выделено * установить контрольную точку в malloc_error_break для отладки

Я не вижу ошибок управления памятью там. Кто-нибудь еще?

+0

Вы установили точку останова на 'malloc_error_break', как вам было сказано? Если да, то какой стек вызовов? –

ответ

1

У меня было то же предупреждение. Но это не происходит в 3.1 или выше.

+0

, вероятно, ошибка структуры. Это происходит только тогда, когда я вызываю -removeFromSuperview. Когда я избавлюсь от него как часть процесса нормального просмотра контроллера, который также удаляет представление, тогда все в порядке. – dontWatchMyProfile

0

Не вижу. Установить NSZombie включен в сборку, чтобы отслеживать ее.

Возможно, это связано с возвратом авторизованного UIImage из метода класса, который, вероятно, будет находиться во временном пуле автоопределений. Изображение может быть уничтожено путем слива этого пула. Чтобы проверить, переместите метод в метод экземпляра и посмотрите, не исчезла ли проблема.

+0

NSZombie здесь не помогает, потому что код в трассировке стека - это только инструкции для рук. Ничто из моего собственного материала не видно там до запуска функции main(). Спасибо за подсказку с помощью метода класса. Это был метод экземпляра, но это не решило проблему. – dontWatchMyProfile

+0

NSZombie здесь не поможет, так как это, по-видимому, происходит «ниже» уровня ObjC (ошибка malloc). –

+0

Я считаю, что это ошибка структуры в 3.0 – dontWatchMyProfile