9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swiftのアクセスコントロールを試してみた

Last updated at Posted at 2014-07-23

今話題の アクセスコントロール(public/pirvate)を試してみた。

開発環境は、XCode6-Beta4 (2014/7/23時点)

最初、Playgroundにて、サンプルコードを記述してみたが、privateなプロパティやメソッドに、みんなアクセスできてしまった。

Declaration.playground
スクリーンショット 2014-07-23 12.28.14.png

ということで、実際、UIViewControllerを使用して自作クラスの、privateなプロパティやメソッドにアクセスしてみた。

DeclarationSample

MyDeclaration.swift
import Foundation

class MyDeclaration{
    
    private var valPrivate:String = "Private Value"
    public var valPublic:String = "Public Value"
    
    private func myPrivateFunc(){
        NSLog("Private Function executed!!")
    }
    
    public func myPublicFunc(){
        NSLog("Public Function executed!!")
    }
}
ViewController.swift
import UIKit

class ViewController: UIViewController {
                            
    override func viewDidLoad() {
        super.viewDidLoad()

        
        var myClass:MyDeclaration = MyDeclaration()
        
        //Public Function
        myClass.myPublicFunc()
        
        //Set Public Property
        myClass.valPublic = "Set New Public Value!!"
        
        //Get Public Property
        NSLog("myClass.valPublic:%@", myClass.valPublic)

        
        //Private Function
        //myClass.myPrivateFunc()
        
        //Set Private Property
        //myClass.valPrivate = "Set New Private Value!!"
        
        //Get Private Property
        //NSLog("myClass.valPrivate:%@", myClass.valPrivate)
       
 }
}

以下のように、仕様の通りに外部からアクセスできないので、事前にエラーとなる。

スクリーンショット 2014-07-23 12.30.11.png

ちなみに、当然、同一クラス内からはprivate関数はコール可能。

MyDeclaration.swift
class MyDeclaration{
    
    private var valPrivate:String = "Private Value"
    public var valPublic:String = "Public Value"
    
    private func myPrivateFunc(){
        NSLog("Private Function executed!!")
    }
    
    public func myPublicFunc(){
		//同一クラス内からはコール可能
        myPrivateFunc()
    }
}

Java出身の自分としては、C言語系のヘッダファイル等によるスコープ管理は非常に難解であったので、とてもわかりやすくなって嬉しい。

ちなみに、XCode6-Beta4になってからもコードアシスト機能が、更に実用的になってきて素晴らしい。今後、SwiftもXcodeも進化していくことを期待している。

Lovely!!

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?