2016-11-12 8 views

답변

2

MTKMesh 및 은 클래스 (참조 유형)입니다. Swift에서 MTKMesh 유형의 변수 은 객체 인스턴스 에 대한 참조입니다. 즉, MTKMesh *의 변수가 Objective-C에 무엇입니까? ,

let mesh1 = MDLMesh() 
let mesh2 = MDLMesh() 
mdlMeshes.append(mesh1) 
mdlMeshes.append(mesh1) 
mdlMeshes.append(mesh2) 

print(mdlMeshes[0] === mdlMeshes[1]) // true 
print(mdlMeshes[0] === mdlMeshes[2]) // false 

처음 두 개의 어레이 요소가 동일한 객체 인스턴스를 참조하는 마지막 :

따라서

단순히 배열의 각 요소 오브젝트 인스턴스에 대한 참조

var mtkMeshes: [MTKMesh] = [] 
var mdlMeshes: [MDLMesh] = [] 

를 선언 할 배열 요소는 다른 인스턴스를 참조합니다. (==="identical-to" operator입니다.)

+0

고마워요. 귀하의 Swift 동급 제품에서 Obj-C와 실제로 다른 배열을 미리 할당했음을 알았습니다. 컨텍스트의 경우 mdlMeshes를 inout 매개 변수로 사용하여 해당 배열을 할당하고 채우는 함수에 대한 코드 조각입니다. +1 "==="팁. – dugla

+1

@dugla :'var mtkMeshes : [MDLMesh]? '를 선언하고 그 주소를 배열을 할당하고 채우는 함수'func foo (mesh : inout [MDLMesh]?)'에 전달할 수도 있습니다. –