Что происходит, так это то, что память, однажды занятая вашим NSArray, занята другим объектом.Это может быть любой объект, и поскольку вы много касаетесь экрана, UITouch очень распространен.
Это означает, что вы не сохраняете NSArray, когда это необходимо, поэтому он освобождается преждевременно.Вы не показываете код, объявляющий arr
, но если вы объявляете arr как
@property (nonatomic,retain) NSArray *arr;
и синтезируете его, используя
@synthesize arr;
, то сохранение обрабатывается простым присвоением self.arr
вместо arr
:
self.arr = [input componentsSeperatedByString:@"\n"];
В языке какао ваш объект теперь "владеет" массивом.В методе dealloc
этого класса вы должны [self.arr release]
.
Если вы назначите какой-либо другой массив для self.arr
, объект, назначенный self.arr
, ранее будет освобожден, а новый сохранен..