2016-09-27 11 views
8

私はSwift 3を使ってiOS 8からiOS 10をXcode 8にマイグレーションしようとしています。エクステンションでいくつかのファイルを宣言したところでエラーが発生しましたこれらの関数内のメソッドは、プライベートな保護レベルのためにアクセスできません。私はエラーを取得するのはここfuncは 'プライベート'の保護レベルのためにアクセスできない

は次のようになります。これは私のクラスはに準拠しているプロトコルである

extension VideoViewerViewController: SeekerViewDelegate { 
fileprivate func seekerViewBeginSeeking(view: SeekerView) { 
    self.shouldStartPlayingAfterSeek = self.player.rate > 0.0 //'shouldStartPlayingAfterSeek' is inaccessible due to 'private' protection level 
    self.pause() //'pause()' is inaccessible due to 'private' protection level 
} 

private protocol SeekerViewDelegate: class { 
func seekerViewBeginSeeking(view: SeekerView) 
func seekerView(view: SeekerView, didSeek progress: CGFloat) 
func seekerViewDidEndSeeking(view: SeekerView) 
} 

私はまだプライベート、fileprivateの概念を把握するのに苦労しています、および内部。

すべてのヘルプは高く評価され、感謝

答えて

18

internalは、現在のモジュールにプライベートです。 fileprivateは、現在のファイル(これは、privateと呼ばれていました)のプライベートです。新しいprivateは、現在のスコープ(ほとんどの人がプライベートと考えていると思われるものに近い)に対してプライベートです。

+0

私はメソッドにアクセスしたい場合、プロトコルファイルをプライベートにする必要がありますか? –

+0

はい。それ以外の場合は現在のスコープに限定されています –

+0

私がそうしても、私的保護レベルのためにメソッドにはまだアクセスできません –

関連する問題