Почему NSIndexPath не работает нормально в iOS5? - PullRequest
0 голосов
/ 10 января 2012

Где бы я ни использовал indexpath значения, приложение закрывается в iOS5.Кто-нибудь может сказать точную причину этого?Я прочитал много вопросов и ответов, связанных с этим.Но все еще в замешательстве.

В чем причина этого?

Каковы все изменения, которые мы должны сделать, чтобы предотвратить сбои?

Где я могу узнать этот тип изменений кода длябудущие версии iOS?

Обновление:

Вот код сбоя:

MyClass.h

@interface MyClass:UIViewController <......> {
...
NSIndexPath* indexPathOfCell;
...
}

...
...


MyClass.m

....

- (IBAction) someAction: (UIButton *) buttonName {
...
indexPathOfCell = [MyTableView indexPathForCell:swipeCell]; //swipeCell is a UITableViewCell
...
}

...

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
...
[self deleteEntity: indexPathOfCell];
...
}

...
...

- (void)dealloc
{
[indexPathOfCell release];
indexPathOfCell = nil;
...
}

Ответы [ 2 ]

3 голосов
/ 10 января 2012

В методе someAction вы назначаете объект NSIndexPath члену indexPathOfCell. Но поскольку он автоматически выпущен, он не будет доступен другим способом. Таким образом, вы получаете крах. Вместо этого сделайте следующее, где я предлагаю вам сохранить переменную.

- (IBAction) someAction: (UIButton *) buttonName {
  ...
  indexPathOfCell = [[MyTableView indexPathForCell:swipeCell] retain]; //swipeCell is a UITableViewCell
  ...
}
1 голос
/ 10 января 2012

В IOS 5 Назначение NSIndexPath (=) и равенство (==) не работает.Я использовал self перед любым объектом NSIndexPath (Моя проблема была решена)

Example:-  self.myIndexPath

Другой способ решения: -

FirstIndexPath = (NSIndexPath*) [SecondIndexPath  copy];

Равенство работает таким же образом.Как:

if([self.mSelectedSubUnitIndex isEqual:SecondIndexPath])
{

}
...