22405


例えば、UIViewを継承したTestViewというクラスを作成したときに、  
frameを外からいじって欲しくない場合どうしたらよいでしょうか。

[code]

    class TestView:UIView{
        //何か処理
    }
    
    class ViewController:UIViewController{
        override func viewDidLoad(){
            super.viewDidLoad()
    
            let testView = TestView()
            //このようにframeを操作されることを禁止したい。
            testView.frame = CGRectZero
        }
    }
    
[/code]

反映されなくするようにするだけでもよいのですが、できれば上記のようにframeを操作しようとした時点でエラーがでるようにしたいのです。


CC BY-SA 3.0
2016-02-22T11:20:45.270
22394
2016-02-22T18:01:51.947
13404
question
swift
継承した親クラスのプロパティのアクセス制限をしたい。


以下のコードででしたら、外部から変更は出来なくなると思います。TestView内部ではsuper.frameを操作すれば変更することができます。ただ、実際この実装を行って副作用が出ないかは分かりません。

[code]

    class TestView: UIView {
        override var frame: CGRect {
            get {
                return super.frame
            }
            set {
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2016-02-22T18:01:51.947
22405
2016-02-22T18:01:51.947
238
22394
answer