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

Den*_*nis 5 oop methods protocols class-method swift

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!)
}
Run Code Online (Sandbox Code Playgroud)

嗨这是我在GitHub上找到的一段代码.在这个协议中,类方法和实例方法之间的主要区别是什么?它们是如何定义的?谁能帮我?

Dhr*_*ani 6

文档中的一些文字:

实例方法

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

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

var a:classAdoptingNoteProtocol=classAdoptingNoteProtocol()
a.update()
Run Code Online (Sandbox Code Playgroud)

分类方法

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

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

var b=classAdoptingNoteProtocol.noteFromNoteEntity(...)
Run Code Online (Sandbox Code Playgroud)

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