2015-12-15 72 views
2

如何在Swift中實現類內部協議?Swift中的類內部協議

的問題是,

class C { 
    private protocol P { 
     func aFunction() 
    } 

    private class D: P { 
     func aFunction() { 
      //... 
     } 
    } 
} 

導致錯誤

聲明只在文件範圍內

繞過這個問題的任何想法是否有效?

排除:我做不是是指class-only protocols,當然這是可能的。

回答

4

swift中的訪問控制是基於文件的。我不相信你可以在一個類中定義一個協議,但你可以將它包含在同一個文檔中。

private protocol P { 
    func aFunction() 
} 

class C { 
    private class D: P { 
     private func aFunction() { 
      //... 
     } 
    } 
} 

當然,這並不意味着從C類繼承的類可以使用協議P

據我所知,Swift不支持基於繼承的訪問控制。