2012-01-10 3 views
0

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

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

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

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

Update:

Вот разбившийся код:

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

Вы работаете в последнем Xcode? –

+5

indexpath отлично работает в IOS5. Вероятно, проблема связана с тем, как вы ее используете. Можете ли вы предоставить небольшой образец кода, который демонстрирует ошибку? –

+0

+1 @AdamDavis, введите код, где он сбой – Ilanchezhian

ответ

3

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

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

Огромное вам спасибо. Могу ли я объявить свойство сохранения в файле .h вместо того, чтобы его здесь помещать? – Confused

+0

да, вы можете это сделать .. – Ilanchezhian

1

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

Example:- self.myIndexPath 

Другой путь Решение: -

FirstIndexPath = (NSIndexPath*) [SecondIndexPath  copy]; 

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

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

} 
+0

Это не имеет никакого смысла. Конечно, операторы равенства и назначения работают в iOS 5.0. Они не нарушили фундаментальные части языка Objective-C. –

Смежные вопросы