我使用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;
...
}
答案 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])
{
}