我想封装一个实用程序函数。我在结构和阶级类型之间犹豫不决。下面是源代码和反汇编代码。
我可以提到的Struct和Class类型之间的区别是: Value vs Reference Type,Stack vs Heap分配。
堆栈类型和类类型之间还有什么区别?
哪种类型是封装实用程序函数的最佳类型?
码
struct testStruct {
static func methodStruct() { }
}
class testClass {
static func methodClass() { }
}反汇编
test`static testStruct.methodStruct():
0x10c168780 <+0>: pushq %rbp
0x10c168781 <+1>: movq %rsp, %rbp
-> 0x10c168784 <+4>: popq %rbp
0x10c168785 <+5>: retq
test`static testClass.methodClass():
0x10c168790 <+0>: pushq %rbp
0x10c168791 <+1>: movq %rsp, %rbp
0x10c168794 <+4>: movq %r13, -0x8(%rbp)
-> 0x10c168798 <+8>: popq %rbp
0x10c168799 <+9>: retq 发布于 2019-11-07 02:01:25
您还可以在枚举上使用静态功能:
enum testEnum {
static func methodEnum() {}
}因为没有初始化器就无法实例化枚举,所以您有更好的封装。
发布于 2018-01-19 15:39:42
在类中,您可以对该类使用class关键字,然后可以在子类中重写这些函数。Swift还支持无法在ObjC中使用的全局函数.
如果您可以确保没有必要使用例如类绑定协议或继承,那么您可以使用结构。如果你不确定,那就用类。
然而,这将更多地是关于为什么需要实用工具类的概念讨论。在大多数情况下,您可能希望为现有的框架对象创建一个扩展,而不是创建一个异常庞大的"Utility.swift“。
https://stackoverflow.com/questions/48342293
复制相似问题