首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构化静态方法与类静态方法

结构化静态方法与类静态方法
EN

Stack Overflow用户
提问于 2018-01-19 13:32:24
回答 2查看 728关注 0票数 1

我想封装一个实用程序函数。我在结构和阶级类型之间犹豫不决。下面是源代码和反汇编代码。

我可以提到的Struct和Class类型之间的区别是: Value vs Reference Type,Stack vs Heap分配。

堆栈类型和类类型之间还有什么区别?

哪种类型是封装实用程序函数的最佳类型?

代码语言:javascript
复制
struct testStruct {
   static func methodStruct() { }
}

class testClass {
   static func methodClass() { }
}

反汇编

代码语言:javascript
复制
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   
EN

回答 2

Stack Overflow用户

发布于 2019-11-07 02:01:25

您还可以在枚举上使用静态功能:

代码语言:javascript
复制
enum testEnum {
  static func methodEnum() {}
}

因为没有初始化器就无法实例化枚举,所以您有更好的封装。

票数 1
EN

Stack Overflow用户

发布于 2018-01-19 15:39:42

在类中,您可以对该类使用class关键字,然后可以在子类中重写这些函数。Swift还支持无法在ObjC中使用的全局函数.

如果您可以确保没有必要使用例如类绑定协议或继承,那么您可以使用结构。如果你不确定,那就用类。

然而,这将更多地是关于为什么需要实用工具类的概念讨论。在大多数情况下,您可能希望为现有的框架对象创建一个扩展,而不是创建一个异常庞大的"Utility.swift“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48342293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档