2011-01-31 5 views
0

У меня есть NSMutableString var, который я также синтезировал.Доступ к переменной - iphone

Это получает набор в viewDidLoad

NSLog(@"Var val is %@@",curr_rep_date); 

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

-(IBAction) moreDetails{ 
    NSLog(@"INSIDE IBACTION var val is %@",curr_rep_date); 
} 

Но по какой-то причине, приложение падает (Program received signal: “EXC_BAD_ACCESS”.)

Пожалуйста, помогите мне решить эту проблему,

+0

Что такое "curr_rep_date"? – WrightsCS

+0

Не могли бы вы предоставить описание и основы кода для класса, который вы используете? Обычно у меня есть переменная-член, @property, @synthesize, поэтому ее отсутствие может вызвать проблему. – TahoeWolverine

+0

Именно так я объявил свойство var. – testndtv

ответ

0

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

memory management guide предлагает простой набор правил, которым необходимо следовать, чтобы получить это право.

+0

Является ли EXC_BAD_ACCESS из-за утечки памяти? Также в случае, если я не выпускаю/не выпускаю var, это не должно быть проблемой. Я имею в виду, что освобождение var, которое нужно позже, может быть проблемой, но может ли это быть наоборот? – testndtv

+0

@hmthur: Нет, это из-за противоположности (возможно). Утечка памяти - это когда память сохраняется навсегда. В этом случае ваш объект освобождается слишком рано. – Chuck

+0

Да, подумайте о EXC_BAD_ACCESS как исключении seg-fault или null reference. Следует иметь в виду, что если управление переходит к пользовательскому интерфейсу, в некоторых случаях объекты могут автоматически освобождаться от ошибок. Это, безусловно, так, если вы ждете нажатия кнопки. – TahoeWolverine

2

вы уверены, что вы либо использовать сеттер (который, мы надеемся, сохраняет объект), когда вы создаете объект или создать не автореализованный объект?

выберите один.

self.curr_rep_date = [NSMutableString string]; 

curr_rep_date = [[NSMutableString alloc] init]; 
+0

ok..I добавил строку в curr_rep_date = [[NSMutableString alloc] init]; и попробовал еще раз. Но все-таки приложение рушится. – testndtv

+1

Не просто добавляйте строку, не понимая, что это значит. Скорее всего, все, что вы сделали, создает утечку при сохранении сбоя. – bbum