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上找到的一段代码。在这个协议中,类方法和实例方法之间的主要区别是什么?它们是如何定义的? 任何人都可以帮助我吗?
答案 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(...)