2015-01-21 2 views
0

나는 아이폰 OS 7, 8 (7.0 프로젝트의 배포 대상)을 모두 실행하는 장치를 지원하는 아이폰 OS 프로젝트가사용자 정의 CIKernel 및 iOS7에

dyld: Symbol not found: _OBJC_CLASS_$_CIColorKernel 
    Referenced from: /var/mobile/Applications/... 
    Expected in: /System/Library/Frameworks/CoreImage.framework/CoreImage 
in /var/mobile/Applications/... 

오류를 생성하는 코드는 다음 중 하나입니다 : 코드 컴파일 및 모든 아이폰 OS 8 장치에서 문제없이 실행되는 동안, 때마다 나는이 오류가 아이폰 OS 7 장치에서 실행하려고

kernel = [CIColorKernel kernelWithString:kernelStr]; 

CIKernel.h 선언과 같이 kernelWithString: 방법은 iOS8의 도입되었다

__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0); 

그래서 내 질문은 : 어떻게 모두 아이폰 OS 7, 8 장치에서 응용 프로그램 실행을 할 수 있으며, 단지 내 사용자 지정 CIKernel 기능이 있습니다 iOS 7 기기에서 사용 중지 되셨습니까? 그게 가능하니?

프로젝트 설정에서 CoreImage.framework를 '필수'에서 '선택 사항'으로 변경했는데 응용 프로그램이 iOS7.0 장치에서 실행되지만 솔직히 말해서 실제로 해킹이 느껴집니다.

또한 전 처리기 명령 인 __IPHONE_OS_VERSION_MIN_REQUIRED__IPHONE_OS_VERSION_MAX_ALLOWED을 사용해 보았지만 컴파일시에만 유용합니다.

실마리가 있습니까?

답변

1

이를 사용해보십시오 :

Class colorKernelClass = NSClassFromString(@"CIColorKernel"); 
kernel = [colorKernelClass kernelWithString:str]; 
0

So my question is: How can I make the app run on both iOS 7 and 8 devices and just have my custom CIKernel feature disabled for the iOS 7 devices? Is that possible?

당신은 다음과 같이 런타임에 OS의 버전을 확인할 수 있습니다 :이 구문 분석하고 주요 버전을 추출 할 수있는 문자열을 제공

NSString *osVer = [[UIDevice currentDevice] systemVersion] 

...

+0

그래,하지만 그 오류가 나타나기를 계속했다. – Stelabouras