swiftの学習(classのアクセス)
publicとprivateがあるよう
あとinternalがあるようですけど、現時点では不明…
サンプル
sample1.class.swift
// // sample1.class.swift // import Foundation // public class public class Sample1{ // コンストラクタ init(){ println("Sample1 init") } // public メソッド public func test1(){ println("Sample1 test1") } // internal メソッド internal func test3(){ println("Sample1 test3") } // private メソッド private func test2(){ println("Sample1 test2") } // デストラクタ deinit{ println("Sample1 deinit") } }
sample2.class.swift
// // sample2.class.swift // import Foundation // internal class internal class Sample2{ // コンストラクタ init(){ println("Sample2 init") } // internal メソッド internal func test1(){ println("Sample2 test1") } // internal メソッド internal func test3(){ println("Sample3 test3") } // private メソッド private func test2(){ println("Sample2 test2") } // デストラクタ deinit{ println("Sample2 deinit") } }
sample3.class.swift
// // sample3.class.swift // import Foundation private class Sample3{ init(){ } // private private func test1(){ println("Sample3 test1") } deinit{ } }
main
// // main.swift // swift_Sample06 // import Foundation var a1 = Sample1() a1.test1() // a1.test2() error a1.test3() var a2 = Sample2() a2.test1() // a2.test2() error a2.test3() // var a3 = Sample3() error
まとめ
privateを指定すると外からアクセスできない。
public、internalの場合は可能。
なんかinternalの場合は別ターゲットからできないとか書かれていたけど、よくわからないので保留とする。
多分でデフォルトの定義がpublicかinternalかも…
フレームワークとかはピンと来ないけど他と連携する場合に問題が発生するかも…