2017-09-08 1 views
0

스위프트이 코드의 등가물에 SCNVector3의 당량SceneKit : (0, 0, 0) 목표 C

startNode.scale = SCNVector3(1/100.0, 1/100.0, 1/100.0) 

은 : 목표-C에서

[startNode setScale: SCNVector3Make(1/100.0, 1/100.0, 1/100.0)]; 

.

SCNVector3SCNVector3Make으로 대체되어야한다는 것이 이상하게 보입니다. 왜 이런거야?

감사합니다.

+0

그래서 SCNVector3과 SCNVector3Make는 Swift에서 엄격하게 동일합니까? –

답변

1

SCNVector3Make(x, y, z)SCNVector3(x, y, z)을 Swift에서 사용하십시오.

나중에 실제로는 의미가 이상하지만, 과 동일한입니다.

+0

왜 이상합니까? C 함수 API와 Swift API 간의 모든 네이밍 표준 변환을 따릅니다. – user28434

+0

@ user28434'CGPoint' 또는'CGRect'의 초기화 프로그램을 확인하십시오; 그들은 모두'SCNVector3 (x, y, z)'와는 달리 외부 매개 변수 이름을 가지고있다. – the4kman

+0

실제로. 그러나,'SCNVector3'는'Float'을위한 매개 변수 이름을 가진 Swift 이니셜 라이저를 가지고 있습니다. 그러나 OP가 왜 Objective C에서 왜 SCNVector3가 SCNVector3Make인가, 왜 paramter 이름이 없는지 궁금해하고 있습니다. – user28434

1

둘 다 동일합니다. Apple C/ObjC 프레임 워크와 Swift 코드에서 이름이 다르기 때문에 이름 만 다릅니다.


예를 작동 방법을 보여 더 나은 것 :

우리는 프레임 워크 SomeFramework (SF 다음 될 것 네임 스페이스 접두사를) 만드는 말했다 프레임 워크에 우리가 접두어로 입력 Example을해야합니다 가정 해 보겠습니다 SFExample이됩니다.

C의 명명 규칙은 우리 유형이 SFExample 인 생성자를 SFExampleMake이라고합니다.

Swift의 명명 규칙은 이어야하며 SFExample(…)이라고 할 수 있습니다.

그리고 당신은 당신의 스위프트 프로젝트에 ObjC/C 프레임 워크를 가져 오는 경우 SFExampleMakeSFExample.init 또는 SCNVector3.initSCNVector3Make을 도는 장면 뒤에이 namecast입니다.