0
我想在類文件的頂部設置一個變量,所以我可以使用它幾行。我遇到的問題是Instance member 'streamWidth' cannot be used on type 'BroadcastViewController'
。所以我認爲這是因爲我不能在主類中引用這個變量,所以我必須在函數中使用它。現在如果是這樣的話,我有辦法解決這個問題嗎?Swift背景成員問題
class BroadcastViewController: UIViewController, VCSessionDelegate {
@IBOutlet weak var previewView: UIView!
@IBOutlet weak var btnConnect: UIButton!
var streamWidth:Int = Int(5)
var session:VCSimpleSession = VCSimpleSession(videoSize: CGSize(width: streamWidth, height: 720), frameRate: 30, bitrate: 1000000, useInterfaceOrientation: false)
override func viewDidLoad() {
super.viewDidLoad()
previewView.addSubview(session.previewView)
session.previewView.frame = previewView.bounds
session.delegate = self
}
deinit {
btnConnect = nil
previewView = nil
session.delegate = nil;
}
@IBAction func btnConnectTouch(sender: AnyObject) {
switch session.rtmpSessionState {
case .None, .PreviewStarted, .Ended, .Error:
session.startRtmpSessionWithURL("rtmp://east-us.livewx.tv/live", andStreamKey: "fb4843e86976e37" + "?key=" + "e5615d9b171384a0613f")
default:
session.endRtmpSession()
break
}
func connectionStatusChanged(sessionState: VCSessionState) {
switch session.rtmpSessionState {
case .Starting:
btnConnect.setTitle("Connecting", forState: .Normal)
case .Started:
btnConnect.setTitle("Disconnect", forState: .Normal)
default:
btnConnect.setTitle("Connect", forState: .Normal)
}
}
// more functions left out for length reasoning
}
所以其中的一些功能,如deinit
,btnConnectTouch
和connectionStatusChanged
都使用頂部定義的變種會話。
我在問:我怎樣才能使用var session:VCSimpleSession
內的變量?
非常感謝!
哇,沒有工作 - 謝謝!不過,爲什麼我們要這樣做:'var session:VCSimpleSession!'? – Craytor
這就是所謂的隱式解包可選。看看上面的鏈接和Apple的文檔https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID334 – jrc