使用协议以快速语言连接两个类的问题

时间:2014-06-20 15:46:35

标签: swift swift-playground

我使用游乐场并尝试获取消息"显示:你好"在下面的简单代码中。但是,没有显示,但没有编译器错误。我不知道问题出在哪里。

protocol showSome{
   func show(str:String)
}
class client: showSome{
   var s: server?
   init(){
       s = server(str: "Hello", delegate: self)
   }    
   func setup(){
       let server = s!
       server.service()       
   }    
   func show(str: String) {
       println("show: \(str)")
   }
}
class server{
   let delegate: showSome?
   let str: String
   init(str: String, delegate: showSome){
       self.delegate = delegate
       self.str = str
   }
   func service(){
       let d = delegate!
       d.show(str)
   }
}

var c = client()
c.setup()

3 个答案:

答案 0 :(得分:0)

Playground不显示println的输出。通过视图>打开助理编辑器助理编辑器菜单,你应该看到它。

答案 1 :(得分:0)

您的班级 - “服务器” - 与您客户的变量同名。所以我不确定当你说

时会发生什么
   s = server(str: "Hello", delegate: self)

<剪断>

   let server = s!
   server.service()       

我将班级名称更改为 S erver& C lient,它按预期工作。

答案 2 :(得分:0)

您的代码适合我。如果您在操场上看到输出转到println()

,则必须打开时间轴

open timeline

btw:通过约定,类名使用带有初始大字母的CamelCase。