nbu*_*urk 3 objective-c ios swift
这SO后解释得很好如何解决创建一个问题delegate是weak.
基本上,有两种方法:
使用@objc关键字:
@objc protocol MyClassDelegate {
}
class MyClass {
weak var delegate: MyClassDelegate?
}
Run Code Online (Sandbox Code Playgroud)
使用:class关键字:
protocol MyClassDelegate: class {
}
class MyClass {
weak var delegate: MyClassDelegate?
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试做一些研究,以了解这两种方法之间的差异究竟是什么.该文档是关于使用非常清楚@objc:
要在Objective-C中可访问和使用,Swift类必须是Objective-C类的后代,或者必须标记它
@objc.
但是,我找不到有关:class实际行为的信息.从细节上考虑整个概念,它实际上并没有多大意义.我的理解是,classSwift中的关键字是声明类.所以,这里似乎我们正在使用关键字class本身作为协议(因为我们在:协议声明之后附加它).
那么,为什么这甚至在语法上有效,它究竟是做什么的呢?
:class确保只有类可以实现协议.这是任何类,而不仅仅是子类NSObject.@objc另一方面,告诉编译器使用Objective-C样式的消息传递来调用方法,而不是使用vtable来查找函数.
| 归档时间: |
|
| 查看次数: |
634 次 |
| 最近记录: |