作者bjk (Up2u)
看板MacDev
標題[問題] 如何多個view共用同一個socket
時間Wed Mar 28 23:35:32 2018
我目前在嘗試寫一個連線ptt的app
目前遇到一個問題就是在不同的view如何
把使用者的input送到同一個socket
我目前的作法是有一個最原始的ViewController1
ViewController1: UIViewController
{
var socket: GCDAsyncSocket!
var destinationVC2 : ViewController2!
}
每當需要performSegue
則會把
destinationVC2.socketHandler = self
socketHandler就是在destinationVC2裡面的ViewController1
class ViewController2: UITableViewController {
class ViewController2: UITableViewController {
var socketHandler : ViewController1!
}
到目前這樣好像都還可以
但是當我要從ViewController2 performSegue
的時候就越來越複雜了
想請問一下大大們都是怎麼處理這樣的行為
感恩
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.185.14
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MacDev/M.1522251335.A.C39.html
1F:→ yr: Singleton03/28 23:40
2F:推 yllan: socket 一直傳下去就好?03/29 00:26
3F:→ yllan: Singleton 和 global variable 差不多的東西03/29 00:27
4F:→ bjk: 謝謝03/29 08:28
5F:→ annies5: 我會把VC1, VC2, Socket放在同一個class去做處理03/29 11:09
6F:推 ckvir: 用extension 加一個socket 類別變數到UIView呢?03/29 20:35
7F:→ ckvir: 這樣每個class 都能用03/29 20:35
8F:→ annies5: 樓主應該是想同一連線有2個不同的VC, 如果把Socket放在03/30 11:46
9F:→ annies5: 其中之一,另一個要取用時就很困擾,因此不如把Socket,VC03/30 11:46
10F:→ annies5: 其中之一,另一個要取用時就很困擾,因此不如把Socket,VC03/30 11:46
11F:→ annies5: 全部放在同一位階.03/30 11:47
12F:→ ckvir: 用extension 不是把socket 放在同個view啊03/30 12:17
class CocoaAsyncSockets: GCDAsyncSocket{
var socket: GCDAsyncSocket!
}
extension CocoaAsyncSockets {
}
class ViewController: UIViewController{
var s:CocoaAsyncSockets = CocoaAsyncSockets()
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func enterAction(_ sender: AnyObject) {
s.conn()
}
}
我現在這樣寫
可是我到另一個頁面的時候
呼叫到的CocoaAsyncSockets還是不同一個耶
然後
然後
GCDAsyncSocket這個class必須複寫
func socket(_ sock: GCDAsyncSocket, didConnectToHost host: String, port: UInt16)
func socket(_ sock: GCDAsyncSocket, didReadData data: Data, withTag tag: Int32){
這兩個fucn
所以好像不能宣告成 static
※ 編輯: bjk (220.134.185.14), 03/30/2018 21:58:23
13F:推 tom19830924: 上面就有人建議你singleton了03/31 11:57
好像不能宣告成 static
所以不知道如何做成singleton
請大大提示一點
※ 編輯: bjk (118.160.162.164), 03/31/2018 23:21:45
14F:→ Teferi: 就把你的GCDAsyncSocket放在singleton的class裡面呼叫 04/01 11:52
15F:→ Teferi: singleton怎麼做,Google的到很多 04/01 11:53
16F:→ bjk: 3q3q 04/01 12:09
17F:→ bjk: 按照T大的方法 可以了 04/01 22:08
18F:→ bjk: 請問如果我要送 上下左右 要用什麼呢Y 04/01 22:11
20F:→ bjk: \u{2190} 送這個也不行 04/01 22:28
21F:推 keith222: 是要寫ptt 連線程式喔?xd 04/03 09:56
22F:→ uranusjr: BBS 要送 VT100 escape codes 04/03 13:22
https://www.csie.ntu.edu.tw/~r92094/c++/VT100.html
# Arrow Keys:
Reset Set
----- ---
up ^[A ^[OA
down ^[B ^[OB
right ^[C ^[OC
left ^[D ^[OD
是這個嘛
※ 編輯: bjk (220.134.185.14), 04/04/2018 05:06:19