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

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

我想在兩種方法中都訪問「成員」。如何在實例方法和類方法中使用成員

+1

**(1)**請務必添加一個初始值初始化'member'財產(或使用默認值初始化)**(2)**您可以通過以'self'關鍵字作爲前綴來訪問'member',例如'self.member',_in你的實例method_,**(3)**你的兩個打印語句都缺少一個後綴paranthesis')'。 **(4)**對於你的'class'(靜態)函數,你不能訪問一個'instance屬性',因爲它自然地連接到一個_instance類本身_,而一個類(靜態)函數只能指向_type_類(它的no_instance_)。 – 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)" 
     } 
}