2016-11-16 5 views
0

GitHubで360人の素晴らしいプロジェクトが見つかりました。 https://github.com/iosdevzone/360VideoUnsafeRawPointerの移行

I が、私はこのエラー持って最後Swift3構文ににそれを変換:「タイプの初期化子を呼び出すことはできません

『をUnsafeMutablePointer』タイプの引数リストで " (UnsafeMutableRawPointer!) " と

" 'UnsafeMutablePointer' のオーバーロードは、これらのPAに存在しますrtiallyパラメータリストに一致する:(RawPointer)、(OpaquePointer)、(OpaquePointer?)、(UnsafeMutablePointer)、(UnsafeMutablePointer?)

私も移行する方法で、この記事を取得するが、それはそれを修正するために私にはあまりにも難しいです自分で。 https://swift.org/migration-guide/se-0107-migrate.html

それは、コードのこのブロックで起こる:

// MARK: - テクスチャ

func loadTexture(_ image: UIImage?) 
{ 
    guard let image = image else 
    { 
     return 
    } 

    let width = image.cgImage?.width 
    let height = image.cgImage?.height 

//エラーが発生しています! せ画像データ= UnsafeMutablePointer(はcalloc(INT(幅*高さ* 4)、はsizeof(GLubyte))!!)

let imageColorSpace = image.cgImage?.colorSpace 
    let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue) 
    let gc = CGContext(data: imageData, width: width, height: height, bitsPerComponent: 8, bytesPerRow: 4 * width, space: imageColorSpace, bitmapInfo: bitmapInfo.rawValue) 
    gc.draw(image.cgImage, in: CGRect(x: 0, y: 0, width: CGFloat(width), height: CGFloat(height))) 

    self.updateTexture(CGSize(width: width, height: height), imageData: imageData) 
    free(imageData) 
} 

答えて

0

このコード:

calloc(Int(width! * height! * 4), sizeof(GLubyte)) 

UnsafeMutableRawPointerを返します。 UnsafeMutablePointerには、この型の引数を持つ初期化子はありません。代わりにcallocを使用しての

let imageData = UnsafeMutablePointer(calloc(Int(width! * height! * 4), sizeof(GLubyte))) 

は、このようなあなたのバッファの配列を作成します(テストしていない)

let numPixel = Int(width! * height! * 4) 
let buffer = [GLubyte](repeating: 0, count: numPixel) 
let imageData = UnsafeMutablePointer<GLubyte>(mutating: buffer) as UnsafeMutablePointer<GLubyte>? 

+0

ありがとうございます! ** imageData **の代わりに** ptrCount **がありますか? –

+0

修正されたエラー。ごめんなさい。メッセージはcallocを使用しないでください – shallowThought

+0

ニース、それは動作します!うわー! –