2011-10-19 2 views
0

작성한 응용 프로그램을 ios 5로 변환 한 다음 inbuilt 도구를 사용하여 자동 참조 횟수를 사용하도록 변환했습니다. ios 5에는 아무런 문제가 없었지만 ARC 변환 후 대부분의 대표단 통화가 작동하지 않는 것 같습니다. 예를 들어 나는 보이는 .H 파일에있는 UITableViewController의 서브 클래스가 같은 :자동 참조 횟수를 사용하도록 변환 한 후 더 이상 대리인 메서드가 호출되지 않음

@interface UITableVCSubclass : UITableViewController <UITableViewDelegate, ... > 
... 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; 
... 
@end 

테이블보기 위임 방법에있는 tableView : didSelectRowAtIndexPath : 나는 테이블의 행을 선택하면 더 이상 호출됩니다. self.tableview.delegate == self라고 선택하면 셀 수 있습니다. 왜 이것이 작동을 멈췄는지에 대한 아이디어가 있습니까?

+0

당신이 당신의 구현을 제공 할 수있는 UITableViewDelegate 방법 :

MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 

새로운 속성을 사용하려면 ** - (NSIndexPath *) tableView : (UITableView *) tableView willSelectRowAtIndexPath : (NSIndexPath *) indexPath; ** –

+0

원래는 willSelectRowAtIndexPath : 메서드가 없습니다. 나는 그것이 호출 될 것인지를보기 위해 다음을 추가했다. '- (NSIndexPath *) tableView : (UITableView *) tableView willSelectRowAtIndexPath : (NSIndexPath *) indexPath { NSLog (@ "willSelectRowAtIndexPath called"); return nil; } ' . . . 전화가 안됐어. – Alec

+0

** tableView.delegate => self ** 연결은 프로그래밍 방식으로 정의 되었습니까, 아니면 Interface Builder에 정의되어 있습니까? –

답변

1

나는 동일한 문제가있어서 좋은 참조를 찾을 수 없으므로 다른 사람에게 도움이되기를 바랍니다. ARC 리팩토링 doohickey를 실행 한 후 제 작업 프로젝트가 작동하지 않았습니다. 내 UITableView에 대한보기 컨트롤러가 즉석에서 만들어지고 변환 프로세스가 찾는 것이 아닌 참조를 저장하지 않고 밀었습니다.

ARC는 범위를 벗어 났을 때 vc를 릴리스하므로보기가 표시되었지만 대리인은 사라졌습니다. 이 문제를 해결하기 위해 super에 새로운 속성을 추가하여 새 View Controller에 대한 참조를 보유한 다음 이벤트를 다시 받기 시작했습니다.

이 변경 : (있는 경우)

self.myViewController = 
    [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];