2016-06-14 3 views
0

project을 objective-c에서 swift로 변환하려고합니다. 신속하게 #define을 변환하는 데 몇 가지 문제가 있습니다.스위프트 2 - 목표 -C#define을 신속하게 변환하십시오.

내가 무엇을 가지고 있습니다 :

#define Mask8(x) ((x) & 0xFF) 
    #define R(x) (Mask8(x)) 
    #define G(x) (Mask8(x >> 8)) 
    #define B(x) (Mask8(x >> 16)) 

UInt32 color = *currentPixel; 
     printf("%3.0f ", (R(color)+G(color)+B(color))/3.0); 

가 어떻게 신속한에서 변수에이를 변환 할 수 있습니까?

귀하의 질문에 4 개 #define의 스위프트에게 제공되지 않습니다
+0

이 스레드를 본 적이 있으십니까? http://tackoverflow.com/questions/24325477/how-to-use-a-objective-c-define-from-swift –

+0

안녕하세요 덕분에 그 밟아 본 적이 있지만 왜이 객관적인 - c 매크로로 'Mark8 '및 변환 방법 – SNos

답변

0

, 당신은 그들을 다시 구현해야합니다 섹션이

당신은 스위프트에서 사용할 수있는 그 등가물을 원한다면 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html에서 복잡한 매크로라는 제목의 참조 빠른. 그것은 당신의 예에서와 같이 간단한 방법은, 매크로 매개 변수를 가정하는 유형 UInt32이며, 수 있습니다 다음과 같이

물론
func swiftMask8(x:UInt32) -> UInt32 
{ 
    return x & 0xFF 
} 

func swiftR(x:UInt32)->UInt32 
{ 
    return swiftMask8(x) 
} 
... 

', 당신은 swift 부분을 삭제할 수 있으며, 단지 기능을 Mask8를 호출 R` , 등등. 왜냐하면 그들의 Objective-C 등가물이 Swift에게 보이지 않기 때문입니다.

+0

고맙습니다. 결국 객관적인 C 브릿지 파일을 사용하여 함수를 사용했습니다 ... 변환하려고 다시 시도하고 알려 드리겠습니다. – SNos