Heeelp! Отладчик говорит "вне области видимости"! - PullRequest
0 голосов
/ 19 января 2010

Я просто не представляю, в чем, черт возьми, может быть проблема. Я сделал красивое приложение и решил использовать только CALayers для «рендеринга».

Когда я увидел, что изменения в свойстве position становятся анимированными, я решил реализовать пользовательское "абстрактное" свойство getter-setter, называемое tanCenter, для установки позиции без анимации.

-(void) setTanCenter: (CGPoint) sentCenter
{   
    //Remove any transactions.
    [CATransaction begin];
    [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
        //Set position.
        self.position = sentCenter;
    [CATransaction commit];

    //Set value.
    tanCenter = sentCenter;
}
-(CGPoint) tanCenter { return tanCenter; }

Так как я слил это в проект, он вылетает без какого-либо "понятного" (для меня) сообщения об ошибке. Я вижу только те "вне области" - с. Я не могу даже получить это свойство tanCenter NSLog-ged без сбоев.

Помоги мне, Оби-Ван Кеноби; ты моя единственная надежда.

Ответы [ 2 ]

0 голосов
/ 21 января 2010

эй, у меня была такая же проблема до сих пор.Наконец, я обнаружил свою ошибку после 2-х недельного отслеживания ошибок ( это действительно отстой )

возможно, моя проблема поможет вам:

Я начал с TableView, который открывается вщелкните другой вид.Поэтому я создал в:

-(void)tableView:didSelectRowAtIndexPath:

сначала контроллер для другого представления и установил значение для глобальной переменной:

SomeView *dtview = [[SomeView alloc] initWithNibName:@"SomeView" bundle:nil];
dtview.lblTitle = cl.textLabel.text; // cl is the cell
[self presentModalViewController:dtview animated:NO];
[dtview release];

Итак, открыл другое представление и выполнил много функций с большимиспользование памяти:)

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

Я действительно искал, действительнодолго выяснять какой был эффект.Похоже, что при освобождении другого представления также освобождается текст первой таблицы.

После помещения копии в вызов это сработало для меня:

dtview.lblTitle = [cl.textLabel.text copy];

Для int и boolпервые решения работают нормально, потому что это не объекты, но для NSObject вы должны скопировать значения в другое представление.

0 голосов
/ 19 января 2010

Если вы запустите в отладчике (Command-Y) и убедитесь, что у вас включены глобальные точки останова , отладчик должен остановиться в том месте, где произошел сбой, давая вам представление о том, что ноль или более -released.

...