2016-04-06 17 views
2
class MyClass:NSObject { 

     var member = "abc" 
     func instanceMethod(){ 
      print("\(member)") 
     } 
     class func classMethod(){ 
      print("\(member)") 
     } 
} 

両方のメソッドで "member"にアクセスしたいと思います。インスタンスメソッドとクラスメソッドの両方でメンバを使用する方法

+1

**(1)**必ず 'member'プロパティを初期化する初期化子を追加してください(またはデフォルト値で初期化する)**(2)** 'self'キーワードを接頭辞として使用して' member'にアクセスすることができます。 'self.member'、あなたのインスタンスmethod_、**(3)**にはあなたのprintステートメントの両方に末尾のparanthesis(') 'がありません。クラス(静的)関数は、インスタンスのプロパティにアクセスすることはできません。これは、クラス自体の_インスタンスに自然に接続されているためです。クラス(静的)関数は、クラスの_タイプ_(その_ _インスタンス_)。 – dfri

+0

MyClassのすべてのインスタンスで共有されるメンバー静的変数を作成し、MyClass.memberを使用してそれにアクセスできます。 –

+0

ありがとうdfri、私はあなたの提案に従って私の質問を修正しました – sschunara

答えて

1

それを行うための唯一の方法は、シングルトンまたは同じタイプの静的メンバを使用して次のようになります。

class MyClass: NSObject { 

     static var sharedInstance : MyClass? 
     var member:String 

     func instanceMethod(){ 
      print("\(MyClass.sharedInstance?.member)" 
     } 

     static func classMethod(){ 
      print("\(sharedInstance?.member)" 
     } 
} 
関連する問題