それは怠惰と重複の原因ではありません、私はあまりにもISSUを持っている: 「AC関数ポインタは、コンテキストをキャプチャ閉鎖から形成することができない」エラーコール機能(インスタンスメンバを使用することはできません)
私のメインのクラスではI "detectChangeMidi"がありますが、このコードでは、関数を呼び出そうとすると、なぜ私は理解できません。 (私もvarを使用することはできません、私のクラスの何でも)
私は迅速にエキスパートではなく、次に何が起こっているのかを説明しようとしています。 私はCoreMidiライブラリを使用しています。
UPDATE:
私はより良いentendementためminimalisteコードでコードを置き換えます。
import Foundation
import CoreMIDI
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
gestionMidi()
//...
}
func gestionMidi() {
//...
let midiNotif:MIDINotifyProc = detectChangeMidi
MIDIClientCreate("Swift3 Test Client" as CFString, midiNotif, nil, &midiClient)
//...
}
func plop(){
print("bla bla bla")
}
let detectChangeMidi: @convention(c) (UnsafePointer<MIDINotification>, UnsafeMutableRawPointer?) -> Swift.Void =
{ midiNotification,unkown in
var notification = midiNotification.pointee
self.plop() //problem here
//...
}
}
インスタンスプロパティ宣言でselfを参照することはできません。 – matt
自分ではなく、私もissuを持っています:インスタンスメンバー 'plop'は 'ViewController'タイプでは使用できません。代わりにこのタイプの値を使用することを意味しましたか? – KasaiJo
@matt "lazy var ..."を使うと重複しません。いくつかの問題もあります。 – KasaiJo