Objective-C 정적 라이브러리 클래스 카테고리, 재정의 메소드가 작동하지 않음

StackOverflow https://stackoverflow.com/questions/1269425

  •  13-09-2019
  •  | 
  •  

문제

iPhone에 Three20을 사용하고 있으며 클래스 카테고리를 사용하여 메소드 내에서 수행하는 작업을 변경하려고합니다. 그것은 잘 컴파일하지만, 나는 그것의 중단 점에 도달하지 않습니다.

클래스 카테고리가 클래스의 모든 인스턴스에 영향을 미친다 고 가정하므로 정적 라이브러리를 다시 컴파일 할 필요가 없습니다.

또한 카테고리에 사용하는 클래스가 표시되고 있음을 알고 있습니다. 컴파일러가 실패하는 카테고리를 인터페이스하고 구현할 때 클래스 이름의 끝에 'x'를 추가하면 클래스 이름의 끝에 'x'를 추가하면.

여기서 모든 지침은 매우 감사합니다.

도움이 되었습니까?

해결책

지적 된 바와 같이 여기, iPhone OS 3.0의 정적 라이브러리와 연결되도록 애플리케이션의 다른 링커 플래그에 설정하려면 -all_load 옵션이 필요합니다. -OBJC도 트릭을 수행해야하지만 현재 SDK에서는 작동하지 않습니다. Xcode 4.2의 LLVM 컴파일러에 따라 -objc의 다른 링커 플래그가 올바르게 작동하지 않는 링커 버그를 수정하므로 더 이상 -all_load (불쾌한 부작용이 있음)를 사용할 필요가 없습니다. -OBJC는 정적 라이브러리에서 카테고리를 가져 오는 데 필요한 모든 것입니다.

Three20에서는 해당 링커 플래그가 처음부터 응용 프로그램과 올바르게 연결되도록 설정해야한다고 생각하지만 이미 이러한 플래그가있을 수 있습니다.

다른 팁

두 범주가 동일한 바이너리에서 동일한 클래스에서 동일한 메소드를 재정의하면 오버라이드가 우선 순위로 정의되지 않습니다. 최상의 결과를 얻으려면 서브 클래스를 작성한 다음 메소드를 무시하십시오. 또는 Three20은 Apache-Licensed이므로 라이브러리 자체에서 변경할 수 있습니다.

정적 라이브러리에 링크하는 프로젝트가 있으며 3.0 SDK로 장치에 설치할 때는 -all_load 플래그가 필요합니다. -OBJC는 시뮬레이터에 필요한 전부였습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top