Swfitのシングルトンクラスでのインスタンスメソッドのスコープについて教えて下さい。
例えば、下記のようなDataManagerシングルトンクラスがあるとします。
このクラスにtestMsgを定義しているのですが、
他のクラスからこのtestMsgメソッドを呼び出すには、
DataManager.sharedInstance.testMsg()としなければ呼び出すことができません。(と認識しています。)
しかし、Xcodeで書いているとDataManager.testMsg()のように予測で出てきてしまいます。(エラーにはなります)
このように他のクラスからsharedInstanseせずに呼び出すことが出来るのはSwiftの仕様なのでしょうか?
sharedInstanceしなければtestMsg()を呼び出すことが出来ないようにすることは可能でしょうか?
swift
1class DataManager: NSObject { 2 3 var message = "Singleton" 4 5 class var sharedInstance:DataManager{ 6 struct Static{ 7 static let instance:DataManager = DataManager() 8 } 9 return Static.instance 10 } 11 12 override private init() { 13 super.init() 14 } 15 16 func testMsg() { 17 print("\(message)") 18 } 19} 20 21---- 22 23class ViewController: UIViewController { 24 25 override func viewDidLoad() { 26 super.viewDidLoad() 27 28 var message = DataManager.sharedInstance.message 29 NSLog("\(message)") 30 31 DataManager.sharedInstance.message = "This is singleton" 32 message = DataManager.sharedInstance.message 33 NSLog("\(message)") 34 35 DataManager.sharedInstance.testMsg() // これが通常の呼び出し 36 DataManager.testMsg() // 予測変換で出てきてしまう 37 } 38} 39
何卒ご教授いただけますと幸いです。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/21 10:50