1
iOS 앱의 경우 일부 Objective-C 코드를 Swift로 변환 중입니다.Swift에서 AutoreleasingUnsafeMutablePointer를 어떻게 구성합니까?
다음+ (nullable NSArray<MTKMesh*>*)newMeshesFromAsset:(nonnull MDLAsset *)asset
device:(nonnull id<MTLDevice>)device
sourceMeshes:(NSArray<MDLMesh*>* __nullable * __nullable)sourceMeshes
error:(NSError * __nullable * __nullable)error;
가 호출되는 방법은 다음과 같습니다 :
NSArray<MTKMesh *> *mtkMeshes;
NSArray<MDLMesh *> *mdlMeshes;
mtkMeshes = [MTKMesh newMeshesFromAsset:asset
device:_device
sourceMeshes:&mdlMeshes
error:&error];
내가 스위프트이 변환하려고 나는 내가 생각
목적-C 코드는이 서명하는 방법을 사용합니다 메서드 호출이 항상 실패하기 때문에 잘못하고있다.
위의 방법의 스위프트 버전 :
open class func newMeshes(from asset: MDLAsset, device: MTLDevice, sourceMeshes: AutoreleasingUnsafeMutablePointer<NSArray?>?) throws -> [MTKMesh]
나는 그것을 사용하는 방법은 :
do {
var myPointer: AutoreleasingUnsafeMutablePointer<NSArray?>? = nil
myPointer = AutoreleasingUnsafeMutablePointer<NSArray?>.init(&modelIOMeshList)
metalMeshList = try MTKMesh.newMeshes(from:asset, device:device, sourceMeshes: myPointer)
} catch {
fatalError("Error: Can not create Metal mesh from Model I/O asset")
}
방법은 두 배열을 채울 예정이다. 그것은 그렇게하지 않습니다. 나는 무엇을 여기에서 놓쳤 느냐?