2016-10-06 4 views
2

UITableView를 관리하는 데 사용하려고하는 사용자 지정 UITableViewController가 있습니다. jQuery과를 포함하는 주요 UIViewController에 내 코드의 흐름은 아래와 같이 진행됩니다ObjC 클래스 메서드가 호출되지 않습니다. GDB 게임?

_messagesTableVC = [[AllMessagesTableViewController alloc] init]; 

    _allMessageTableView.dataSource = _messagesTableVC; 
    _allMessageTableView.delegate = _messagesTableVC; 

    [_allMessageTableView reloadData]; 

AllMessagesTableViewController 사용자 정의있는 UITableViewController 클래스, 그것은 어떤 처리가 필요 않습니다 초기화 나에 _allMessageTableView (jQuery과)의 대표를 설정 내 커스텀 클래스.

이 코드를 실행할 때 사용자 지정 클래스가 없지만 오류가없는 것처럼 프로그램이 작동합니다. 그것은 커스텀 클래스의 아무 메소드도 호출되지 않기 때문에, init, initWithCoder, 아무 것도 (나는 breakpoint를 설정하고 체크했다;)).

아래 스크린 샷에서 볼 수 있듯이 YES을 반환하도록 설정 한 맞춤 클래스에 맞춤법 refreshData을 입력 한 다음 중단 점을 설정했습니다. refreshData의 반환 값을 로컬 변수 test에 할당합니다. 디버거에서

:

  1. _messagesTableVC 사용자 정의 클래스는 전무로 표시되지 않습니다.
  2. test이 존재하지 않습니다.
  3. 여기에 표시되지 않지만 디버거에서 [_messagesTableVC refreshData]을 실행하려고하면 error: Execution was interrupted, reason: Attempted to dereference an invalid ObjC Object or send it an unrecognized selector. The process has been returned to the state before expression evaluation.이라고 표시됩니다. 그래서 _messagesTableVC 실제로 nil입니까 ?? 이러한 문제의 원인이 될 수 또는 GDB는 게임을 무엇

screenshots

? 이는 차이를 만드는 경우 메시지 앱 확장입니다. 감사.

업데이트 : 빈 작업 프로젝트를 생성하고 있기 때문에 (내 원래 프로젝트에 정확한 파일을 붙여 복사 다음은 사용자 정의 클래스의 초기화 및 refreshData

- (instancetype)init { 
    self = [super init]; 
    if (!self) 
     return nil; 
    return self; 
} 

- (BOOL)refreshData { 
    return YES; 
} 

갱신 2의 코드는 큰 iOS 앱의 iMessage 확장). Xcode는 프로젝트를 정리하고 UITableView 대리인을 변경하여 다른 텍스트를 제공 한 후에도 응용 프로그램의 이전 빌드를 실행하고있는 것으로 나타났습니다. more

+0

'-refreshData'에 대한 코드를 게시 할 수 있습니까? 그리고 AllMessagesTableViewController의'-init' 메쏘드가 적중되지 않았습니까? 아니면 당신이 의미하는 것이 아닌가요? –

+0

또한 사이드 노트, GDB가 아니라 디버거로 LLDB를 사용하고있는 것처럼 보입니다 (단, IMO와 관련이 없습니다). –

+0

@AO'init'과'refreshData' 메소드를 포함하도록 제 질문을 업데이트했습니다. 네, 간단한'init'과'refreshData' 메소드를 만들지 만 이상한 것은 아무것도 실행하지 않습니다. 올바른 파일을 가져 오는 중임을 확인했습니다. – AnsonL

답변

0

이전에 같은 프로젝트에 대한 메시지 확장을 생성하고 프로젝트에 파일을 보관하면서 대상을 삭제했습니다. 메시지 익스텐션을 프로젝트에 다시 추가하면 Xcode는 앱의 이전 빌드를 계속 실행했습니다. 모든

  • 프로젝트 외부의 디렉토리에 프로젝트에서 확장 대상
  • 백업 기존 메시지 확장 코드를 메시지 삭제

    1. 청소 : 나는 엑스 코드에 의해 응용 프로그램의 이전 버전을 실행하는 문제를 해결했습니다. 그런 다음 프로젝트에서 메시지 앱 그룹 및 디렉토리를 삭제하십시오.
    2. 프로젝트에서 메시지 확장 빌드 구성표를 삭제하십시오.
    3. 프로젝트 삭제 파생 데이터 디렉터리를 삭제하십시오.
    4. Xcode를 다시 시작하고 프로젝트에서 새 메시지 확장명 대상을 만들고 저장된 코드를 가져옵니다.
  • 관련 문제