Swift中类方法和实例方法的区别是什么?

时间:2015-02-17 19:34:37

标签: swift oop methods protocols class-method

protocol NoteProtocol {
    var body: NSString? { get set }
    var createdAt: NSDate? { get set }
    var entityId: NSString? { get set }
    var modifiedAt: NSDate? { get set }
    var title: NSString? { get set }

    // class methods
    class func insertNewNoteInManagedObjectContext(managedObjectContext: NSManagedObjectContext!) -> NoteProtocol
    class func noteFromNoteEntity(noteEntity: NSManagedObject) -> NoteProtocol

    // instance methods
    func update(#title: String, body: String)
    func deleteInManagedObjectContext(managedObjectContext: NSManagedObjectContext!)
}

您好 这是我在GitHub上找到的一段代码。在这个协议中,类方法和实例方法之间的主要区别是什么?它们是如何定义的? 任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:6)

来自the documentation的一些文字:

实例方法

  

实例方法是属于特定类,结构或枚举的实例的函数。它们通过提供访问和修改实例属性的方法,或通过提供与实例目的相关的功能来支持这些实例的功能。

即。类的实例必须调用此方法。示例:

var a:classAdoptingNoteProtocol=classAdoptingNoteProtocol()
a.update()

课程方法

  

如上所述,实例方法是在特定类型的实例上调用的方法。您还可以定义在类型本身上调用的方法。这些方法称为类型方法。通过在方法的func关键字之前编写关键字class来指定类的类型方法,并通过在方法的func关键字之前写入关键字static来键入结构和枚举的方法。

它们在其他语言中被称为静态方法。要使用它们,这就是我要做的:

var b=classAdoptingNoteProtocol.noteFromNoteEntity(...)

这将返回采用NoteProtocol的类的实例。即。你不必创建一个类的实例来使用它们。

答案 1 :(得分:1)

下面是实例方法和类方法的定义(在Swift中称为类型方法)。

有关详情,请浏览method section of the Swift documentation

实例方法:

  

实例方法是属于特定类,结构或枚举的实例的函数。它们通过提供访问和修改实例属性的方法,或通过提供与实例目的相关的功能来支持这些实例的功能。实例方法与函数具有完全相同的语法

输入方法:

  

如上所述,实例方法是被调用的方法   特定类型的实例。您还可以定义方法   呼唤类型本身。这些方法称为类型   方法。您可以通过编写关键字来指定类的类型方法   方法的func关键字之前的类,并为其键入方法   通过在关键字之前写入关键字static来构造和枚举   method的func关键字。

基本上你可以在没有实例的情况下调用类型方法(类方法):

var myNoteProtocol = NoteProtocolAdoptImplClass.noteFromNoteEntity(...);

虽然您需要实例化实例方法:

var myNoteProtocol  = NoteProtocolAdoptImplClass()
myNoteProtocol.update(...)