m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

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かも…

フレームワークとかはピンと来ないけど他と連携する場合に問題が発生するかも…