Xcode 如何在swift中访问其他类中的变量?

Xcode 如何在swift中访问其他类中的变量?,xcode,coremidi,Xcode,Coremidi,我使用Xcode 11编写应用程序。下面的代码使用swift提供的Coremidi库读取midi数据。我在访问函数MYMIDIReadProc中的变量“dumpStr”时遇到问题。因为我需要通过USB电缆将midi设备连接到iPhone。我需要查看iPhone中的变量。但是,该程序只允许我使用打印功能。有人能帮我吗 class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var textfield

我使用Xcode 11编写应用程序。下面的代码使用swift提供的Coremidi库读取midi数据。我在访问函数MYMIDIReadProc中的变量“dumpStr”时遇到问题。因为我需要通过USB电缆将midi设备连接到iPhone。我需要查看iPhone中的变量。但是,该程序只允许我使用打印功能。有人能帮我吗

class ViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var textfield2: UITextField!  
@IBOutlet weak var dytextField: UITextField!  
override func viewDidLoad() {  
    super.viewDidLoad() 
    // Do any additional setup after loading the view.     
    //textView.delegate = self    
   // let dytextField = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 50))
    textfield2.textColor=UIColor.black
    textfield2.text = "hello"
    textfield2.delegate=self
    //self.view.addSubview(dytextField)
}

//func textFieldDidBeginEditing(textField: UITextField) {
    //println("begin edit"+textField.text)

//}

var count:UInt32 = 0

let MyMIDIReadProc : MIDIReadProc = {pktList,readProcRefCon,srcConnRefCon in
    let packetList:MIDIPacketList = pktList.pointee


     var packet:MIDIPacket = packetList.packet
             for _ in 1...packetList.numPackets
             {
             let bytes = Mirror(reflecting: packet.data).children;
             var dumpStr = "";
             var i = packet.length;
             for (_, attr) in bytes.enumerated()
             {
             dumpStr += String(format:"$%02X ", attr.value as! UInt8);
             i -= 1;
             if (i <= 0)
             {
             break;
             }
             }

            print(dumpStr)
                packet = MIDIPacketNext(&packet).pointee;
             }
             }
@IBAction func showMessage(){
    var midiClient: MIDIClientRef = 0;
    var inPort:MIDIPortRef = 0;
    var src:MIDIEndpointRef = MIDIGetSource(0);

    MIDIClientCreate("MidiTestClient" as CFString, nil, nil, &midiClient);

    MIDIInputPortCreate(midiClient, "MidiTest_InPort" as CFString, MyMIDIReadProc, nil, &inPort);

    MIDIPortConnectSource(inPort, src, &src);

  //PlaygroundPage.current.needsIndefiniteExecution = true
 }


}
类ViewController:UIViewController、UIExtFieldDelegate{
@IBOutlet弱var textfield2:UITextField!
@IBEXT弱var dytextField:UITextField!
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后执行任何其他设置。
//textView.delegate=self
//设dytextField=UITextField(帧:CGRect(x:0,y:0,宽度:200,高度:50))
textfield2.textColor=UIColor.black
textfield2.text=“你好”
textfield2.delegate=self
//self.view.addSubview(dytextField)
}
//func textField didbeginediting(textField:UITextField){
//println(“开始编辑”+textField.text)
//}
变量计数:UInt32=0
让MyMIDIReadProc:MIDIReadProc={pktList,readProcRefCon,srcconrefcon在
let packetList:MIDIPacketList=pktList.pointee
var packet:MIDIPacket=packetList.packet
对于uu1…packetList.numPackets
{
让字节=镜像(反射:packet.data);
var dumpStr=“”;
var i=数据包长度;
for(1;,attr),以字节为单位。枚举()
{
dumpStr+=字符串(格式:“$%02X”,属性值为!UInt8);
i-=1;

if(我同意你的建议,但问题仍然存在。“弱”只能应用于类和类绑定的协议类型,而不能应用于“(ViewController)->()->ViewController”。
实例成员“dumpStr”不能用于类型“ViewController”;是否改为使用此类型的值?
类型的值(ViewController)->()->ViewController'没有成员“dumpStr”
class ViewController: UIViewController {

var dumpStr: String {
    didSet {
        // Do what you want to do with dumpStr
    }
}

let MyMIDIReadProc : MIDIReadProc = { [weak self] (pktList, readProcRefCon, srcConnRefCon) in
    // Create dumpStr, assign it to a ViewController property
    self?.dumpStr = dumpStr
        }

}