0

私が値を使用したところはどこ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;
...
}
4

2 に答える 2

3

someActionメソッドでは、NSIndexPathオブジェクトをindexPathOfCellメンバーに割り当てています。ただし、自動リリースされるため、別の方法では使用できません。だからあなたはクラッシュしている。代わりに、次のようにしてください。変数を保持することをお勧めします。

- (IBAction) someAction: (UIButton *) buttonName {
  ...
  indexPathOfCell = [[MyTableView indexPathForCell:swipeCell] retain]; //swipeCell is a UITableViewCell
  ...
}
于 2012-01-10T08:55:06.067 に答える
1

iOS 5ではNSIndexPathの割り当て(=)と等式(==)が機能していません。NSIndexPathオブジェクトの前に自分自身を使用しました(私の問題は解決されました)

Example:-  self.myIndexPath

別の解決方法:-

FirstIndexPath = (NSIndexPath*) [SecondIndexPath  copy];

平等は同じように機能します。好き:

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

}
于 2012-01-10T07:34:41.940 に答える