1

난 (코드EXC_BAD_ACCESS하면서 WKInterfaceTable setNumberOfRows는 : withRowType]

^(int ndx) { 
//... 
} 

배경 스레드에서 호출 블록

__block typeof(self.tableB) self_tableB = self.tableB; 
    [lwc setBaseControllerCallback:^(int ndx) { 
     __block typeof(ndx) ndx_t = ndx; 
     [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
      [self_tableB setNumberOfRows: 0 withRowType:TABLEELEMENT]; 
      [self_tableB setNumberOfRows: ndx_t withRowType:TABLEELEMENT]; 
     }]; 

    }]; 

이 부분을 이용하여 배경 스레드로부터 NSThread를 테이블을 업데이트하고 싶어) 및 lwc - 내 사용자 정의 백그라운드 스레드 클래스의 인스턴스입니다. 이 방법을 지우려면

이와 같이 호출됩니다 // 코드 스레드 내부 (handlerBase_inner) 경우 { handlerBase_inner (NDX ++); }

그래서, [self_tableB setNumberOfRows: ndx_t withRowType:TABLEELEMENT]; 에서 나는 EXC_BAD_ACCESS을 볼 수 있습니다. 왜? 무엇입니까

답변

1

나는 self_tableB에 대해 걱정합니다. 나는 당신이 그것을 강력하게 참조하고, 인위적으로 그것을 유지하는 것이 그것의 대리인에게 돌아가는 매달려있는 포인터를 갖게 할 것 같지 않다.

__block __weak typeof(self.tableB) self_tableB = self.tableB;

트릭에 약한 주석 힘을 추가.