为什么NSIndexPath在iOS5中无法正常工作?

时间:2012-01-10 07:23:26

标签: iphone nsindexpath

我使用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 个答案:

答案 0 :(得分:3)

在someAction方法中,您将NSIndexPath对象分配给indexPathOfCell成员。但由于它是自动释放的,因此无法在其他方法中使用。所以你得到了崩溃。相反,请执行以下操作,我建议您保留变量。

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

答案 1 :(得分:1)

IN IOS 5 NSIndexPath赋值(=)和相等(==)不起作用。我在任何NSIndexPath对象之前使用self(我的问题已解决)

Example:-  self.myIndexPath

另一种解决方法: -

FirstIndexPath = (NSIndexPath*) [SecondIndexPath  copy];
  

平等以同样的方式运作。像:

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

}