1
iOSアプリケーションの場合、Objective-CコードをSwiftに変換しています。SwiftではどのようにAutoreleasingUnsafeMutablePointerを設定しますか?
Objective-Cのコードは、このシグネチャを持つメソッドを使用しています。ここでは
+ (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];
私はスウィフトにこれを変換しようとしていると私は私が考えますメソッド呼び出しが常に失敗するため、間違っています。
上記方法のスウィフトバージョン:私はそれを使用する方法
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")
}
方法は二つの配列を移入することになっています。それはしません。私はここで何を逃したのですか?あなたは&
でNSArray?
変数のアドレスを渡すことができますので、これは動作するはずタイプ
AutoreleasingUnsafeMutablePointer<NSArray?>?
のパラメータに