子类化与子类化协议

2023-12-14

让我们从Class方法:

class LoginCredentials {

    var id : String

    init(userID:String) {
        self.id = userID
    }
}

那么我们将得到以下内容:

class FacebookLoginCredentials : LoginCredentials {

var token : String
init(userID:String,userToken:String) {

    self.token = userToken    
    super.init(userID: userID)
}}

And

class TwitterLoginCredentials  : LoginCredentials {
var token : String
var secret : String
init(userID:String,userToken:String,secret : String) {

    self.token = userToken
    self.secret = secret
    super.init(userID: userID)
}
}

第二种方法是Protocol Oriented如果我没记错的话

protocol LoginCredentials {

    var id : String { get }
}

那么我们将有:

struct FacebookLoginCredentials : LoginCredentials {

var id: String
var token : String
init(userID:String,userToken:String) {

    self.id = userID
    self.token = userToken
}
}

And

struct TwitterLoginProfile : LoginCredentials {
var id: String
var token : String
var secret : String

init(userID:String,userToken:String,secret : String) {

    self.token = userToken
    self.secret = secret
    self.id = userID
}
}

我只需要知道哪一个更 Swift ?


最终,这些方法都不是“更迅速”。在 Swift 中,您有时会想使用继承,有时您会想使用协议。这两种方法的真正决策点是:

您想要值类型语义(结构和协议)还是想要引用类型语义(类和协议)。我通常默认使用值类型语义,因为它们更安全,但在某些情况下引用类型语义肯定很重要。您可以在这里阅读更多相关内容:为什么选择结构而不是类.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

子类化与子类化协议 的相关文章

  • Swift SpriteKit edgeLoopF​​romRect 问题

    下面的代码可以识别底部和顶部边缘场景和球按预期弹开 但是 那左边缘和右边缘现场的情况一直被破坏 如果施加足够的力 球会离开屏幕 然后最终返回 就好像场景的边缘超出了 iPhone 模拟器窗口的边缘 import SpriteKit clas
  • 安装 python 3 的包

    我倾向于在 Jupyter 笔记本中运行我的代码 这些代码在 python 3 中运行 我的计算机上也有 python 2 我安装了pip3所以我可以专门为 python 3 安装软件包 但这似乎不适合我 mba pip3 install
  • 如何制作带有 SWIFT 图像的弹出窗口

    我想知道如何制作类似于此示例的弹出窗口 原始窗口充满了按钮 选择这些按钮后将拉出我想要使用的图像 我会简单地创建一个可重用的UIView组件以及作为子视图所需的一切 例如UIImageView为了你的形象 UILabel or a UIBu
  • 如何保护 iOS 应用程序免受任何操作系统攻击(在越狱设备上)

    我希望保护我的应用程序数据 以防任何操作系统攻击或越狱 iOS 设备上的未经授权的访问 在这种情况下 有什么方法可以检测此类威胁并保护应用程序数据 虽然我同意 jrturton 的说法 但如果您有想要保护的关键数据免受流氓应用程序 而不是用
  • Objective-C UILabel 作为超链接

    我正在尝试做一个UILabel一个链接UIWebView 我怎样才能做一个UILabel作为超链接 您可以使用 UITapGestureRecognizer 它将实现与您想要的类似的功能 UILabel myLabel UILabel al
  • 无法在 Swift 中对闭包进行弱引用

    Update 我试着不弱化地写一下 好像也没有漏的情况 所以也许这个问题已经没有必要了 在 Objective C ARC 中 当你想让一个闭包能够在闭包内部使用它自己时 该块不能捕获对自身的强引用 否则它将是一个保留循环 因此您可以使闭包
  • iOS 中 NSDecimalNumber 的小数分隔符错误

    我尝试通过以下方式输出具有正确的小数分隔符的十进制数的描述 NSString strValue 9 94300 NSDecimalNumber decimalNumber NSDecimalNumber decimalNumberWithS
  • (Kiss)XML xpath 和默认命名空间

    我正在开发一个 iPhone 项目 需要解析一些 xml xml 可能包含也可能不包含默认名称空间 我需要知道如何解析 xml 以防它使用默认命名空间 由于我需要读取和写入 xml 因此我倾向于使用 KissXML 但我愿意接受建议 这是我
  • Swift,以编程方式更改 UICollectionViewCell 和 UILabel(单元格内)的宽度

    我已将单元格 UICollectionViewCell 的宽度设置为等于 UICollectionView 的宽度 并且我尝试对该单元格中包含的 UILabel 执行完全相同的操作 我认为下面的代码准确地解释了我想要实现的目标 所以我在这里
  • 为什么 iOS 启动屏幕很慢?

    我的 iOS 应用程序启动屏幕大约需要 3 5 秒 我有一张将在启动屏幕后加载的地图 我的用户必须等待启动屏幕加载 然后再等待 3 秒才能加载地图 有没有办法最大限度地减少启动屏幕时间 基本上这种延迟意味着you在启动过程中做了一些非常错误
  • 如何让UITextView背景线与文字对齐?

    我正在尝试绘制 UITextView 的背景线 这是我用来画这些线的代码 CGContextBeginPath context CGContextSetStrokeColorWithColor context self horizontal
  • UIViewControllerAnimatedTransitioning:旋转更改后黑屏片段

    我已经创建了一个视图控制器转换 只要我不更改设备方向 一切都正常 图 1 显示了应有的屏幕 然后我切换到下一个视图控制器 在其中更改方向 现在我回到第一个视图控制器并再次切换方向 然后我得到的结果如图 2 所示 出现黑色边框 请不要介意屏幕
  • 调整 UIImage 的大小而不将其完全加载到内存中?

    我正在开发一个应用程序 用户可以在其中尝试加载非常非常大的图像 这些图像首先在表格视图中显示为缩略图 我的原始代码会在大图像上崩溃 因此我重写它以首先将图像直接下载到磁盘 是否有一种已知的方法可以调整磁盘上图像的大小 而无需通过以下方式将其
  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • 根据一个数组对多个数组进行排序

    如何根据数组对一堆数组进行排序createdAt 例如 2015 11 02 19 19 35 0000 将它们组合成另一种类型 字典 以便在 tableView 中使用是否有益 如果有的话如何 var comment AnyObject
  • 在 UIWebView 中播放 Facebook 视频

    有谁知道如何在 Facebook 上播放视频UIWebView 我的应用程序将视频上 传到 Facebook 并检索视频的网址 我想将此网址嵌入到UIWebView播放 我已经为 youtube 解决了这个问题 但没有为 Facebook
  • Mac 应用程序商店 - 尝试让加密发挥作用。 。 。我缺少什么?

    我正在尝试使用 Alan Quartermain 的解决方案 如该问题所链接 Mac App Store 收据验证码 https stackoverflow com questions 4261348 mac app store recei
  • 如何使用 RX 应用宽限时间?

    我有一个Observable
  • 如何更改 SwiftUI 列表中分隔符的颜色?

    我在 SwiftUI 中创建了一个列表 我想更改颜色或删除分隔符 因为在 UIKit 中 我们可以轻松更改 TableView 中分隔符的颜色 下面是 SwiftUI 中列表的代码和 UI 图片 State private var user
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do

随机推荐

  • iPhone SDK 上的 PDF 操作

    我一直在阅读Apple的文档 他们推荐使用UIWebView 这一切都很好 直到您想要转到页码并搜索 PDF 是否有任何第三方库 免费或付费 可以执行此操作 至少我需要能够搜索并转到 PDF 中的页码 我查看过 PDFKit 不可用 并且
  • Laravel:让 Eloquent 创建嵌套 SELECT 的正确方法

    我试图雄辩地生成的查询是 SELECT SELECT COUNT comment id FROM comment AS c WHERE c approved true AND c blog fk b blog id AS comment c
  • 如何在 script# 中编写一个函数,以便使用任何对象调用,而不仅仅是定义它的类的实例?

    我正在 script 中编写 javascript 我想写一个看起来像的函数 function myFunc if this value gt 100 return true else return false 可以使用任何具有属性 val
  • Openshift - 我可以使用 Openshift 运行 docker 客户端命令(如 docker Push)吗?

    当您拥有 Docker 主机时 使用 Docker 会很容易 您将 Docker 客户端与 Docker 主机 引擎 连接 那么构建和部署 复杂的 docker 镜像的过程就像是 Jenkins 构建服务器上的这一系列命令 Maven cl
  • c中的for循环括号

    我编写了一个程序来使用 for 循环打印整数值 打印后 程序应该等待一秒钟 之后这些整数将被双空格字符覆盖 换句话说 程序的目的是在等待一秒后删除这些整数 这是程序 include
  • 在单个线性图中绘制多个字典/数据框

    我正在从多个词典中的某个来源收集数据 如下所示 d1 01 01 2018 15 02 01 2018 15 03 01 2018 15 d1 01 01 2018 20 02 01 2018 25 03 01 2018 56 d1 01
  • 在 .NET 中将字符串转换为 System.Color

    我正在尝试在 VB NET 上制作此应用程序 其中用户可以更改应用程序的背景颜色 当应用程序关闭时 颜色应保存到 XML 节省是小菜一碟 但现在真正的困境是如何转换字符串 Color white to a System Color 我已经用
  • addSnapShotListener 会触发所有依赖它的函数吗?

    据我了解 当 FireStore 中的数据发生变化时 AddsnapshotListener 会实时触发 但是 我不确定下面的代码中会触发哪个函数 只有函数C被触发吗 还是所有功能 如果所有函数都运行 函数 A 的参数会发生什么 func
  • Rails 不为生产或临时环境中的资产提供服务

    调试过程中这个问题 我尝试在本地生产模式下运行我的应用程序 但它不提供任何资产 另外 我有一个stagingHeroku 应用程序 与我的生产 Heroku 应用程序分开 中的环境现在也显示没有任何资产的 HTML 为了调试 我 杀死服务器
  • 如何向 symfony 会话添加额外的包

    我想为 symfony 会话添加一个额外的包 我在编译器通道中这样做 public function process ContainerBuilder container bag new AttributeBag my session at
  • 安装 python 时在 $PATH 中找不到可接受的 C 编译器

    我正在尝试在我的共享主机上安装新的 Python 环境 我按照中写的步骤操作这个帖子 mkdir src wget http www python org ftp python 2 7 1 Python 2 7 1 tgz tar zxvf
  • Oracle:加载一个大的 xml 文件?

    现在我有大量我感兴趣的 XML 数据 https blog stackoverflow com 2009 06 stack overflow creative commons data dump 我想将其加载到 Oracle 中来玩 如何将
  • 部分应用的功能[重复]

    这个问题在这里已经有答案了 在学习函数式编程时 部分应用函数的概念经常出现 在 Haskell 中 类似内置函数的东西take被认为是部分应用的 我仍然不清楚部分应用函数的确切含义或其使用 含义 函数本身不能 部分应用 或不 部分应用 这是
  • DjangoForeignKey 中的循环依赖?

    我在 Django 中有两个模型 A b ForeignKey B B a ForeignKey A 我希望这些外键不为空 但是 我无法创建对象 因为在我 save 之前它们没有 PrimaryKey 但如果没有其他对象 PrimaryKe
  • 使用“#”作为分隔符时 Read.table 不起作用?

    我有一个数据文件 符号作为分隔符 我想用read file命令 首先 这是一个大数据文件 我不想更改分隔符 因为 使用数据中已存在的不同分隔符的风险 注意 可以检查 但第 2 点使这变得更加复杂 我希望有更多这些数据文件 符号作为分隔符 所
  • 可扩展方式访问 ConcurrentHashMap 的每个元素一次

    我有 32 个机器线程和 1 个ConcurrentHashMap
  • 如何在canvas元素中使用html内容

    任何人都可以告诉我如何将我的 html 内容放在画布上 如果我们能做到这一点 这些元素的属性和事件是否有效 并且我还在该画布上绘制了动画 From MDN 上的这篇文章 您不能只将 HTML 绘制到画布中 相反 您需要使用 包含要渲染的内容
  • 如何在 webgl 中使用帧缓冲区?

    我一直在尝试了解 WebGL OpenGL ES 中的帧缓冲区 我知道我们可以使用帧缓冲区混合多个纹理 因此 为了理解我通过采用 1 1 纹理编写了一个示例 并尝试在其之上应用帧缓冲区逻辑 但是 没有成功 请参阅底部的片段 如果您单击 混合
  • Struts2将参数传递给不同webapp中的action

    我使用Struts 2 3 16 3 我希望 webapp 1 中的操作将参数传递给 webapp 2 中的操作 在 webapp 1 的 struts xml 中 我定义了以下结果
  • 子类化与子类化协议

    让我们从Class方法 class LoginCredentials var id String init userID String self id userID 那么我们将得到以下内容 class FacebookLoginCreden