Swift 3中的协议简介
嗨,Apple,什么是协议?
协议定义了适合特定任务或功能的方法,属性和其他要求的蓝图。
– 苹果
在我看来:
再次阅读定义,并称之为一天。
– 苹果
因此,我正在写这篇文章来澄清问题。 同时使事情变得有趣。 稍后,我们将在我们的协议中使用UFC战斗机示例,希望最后一切都会有意义。
协议是什么
协议是继承标题的先决条件列表。 那是正式的定义。
如果有一件事可以帮助您记住协议是什么,那就是黑帮的定义:
一个协议就是您需要这个,这个和这个。 被称为这个。
您需要喝酒,聚会和拖延才能被称为刻板印象的大学生。 这就是我记得并向人们解释什么是协议的方式。
协议语法
语法结构类似于类/结构/枚举。
UFC战斗机协议
一天。 醒来。 您只想成为UFC战士。 您上了达纳·怀特(UFC主席),您问我如何成为UFC战斗机?
“没问题。 让我们谈谈先决条件,属性和方法。” —达娜·怀特
让我们从properties开始。 要成为UFC战士,您需要做的事情。 您需要有一个确定的名称和一个可选的昵称。
这是什么意思 这意味着您在设置名称后便无法更改它。 但是,您可以在设置昵称后对其进行更改。 昵称也可以为nil。
现在让我们谈谈方法 。 成为UFC战士需要做的事情。 您绝对需要能够在UFC中拳打脚踢。 Aka知道基本知识。 您还可以选择垃圾留言。
这是什么意思 这意味着说垃圾话可能是UFC战斗机的能力。 但是,您不必拥有它。 您可以直接战斗。
我觉得您已经在使用UFC协议了。 如果没有,到最后您会感到更多。
我们已经定义并解释了我们的规格。 现在让我们看看如何定义协议。
定义协议的步骤
1.结构和命名协议
协议UFCFighter {
}
2.添加属性要求
协议UFCFighter {
var名称:字符串{get}
var昵称:字符串? {设置}
}
因此, 获取并设置 。 让我们澄清一下。 这些称为变量属性。 您将单独调用get ,gettable。 呼叫设置 ,可设置 。 他们像他们听起来那样。
因此,要传达var nickname
我们可以说:
我们声明了一个具有gettable和settable属性的可选字符串类型的昵称变量。
3.添加明确的方法要求
协议UFCFighter {
var名称:字符串{get}
var昵称:字符串? {设置}
funcpunch()
funk kick()
func grapple()
}
我们添加了必不可少的拳打,踢和抓钩。
4.添加可选方法要求
@objc协议UFCFighter {
var名称:字符串{get}
var昵称:字符串? {设置}
funcpunch()
funk kick()
func grapple()
@objc可选功能funcTrashTalk()
}
我们刚刚添加了可选的垃圾回收方法。
看看您是否发现了惊喜礼物。 吓死了吗? 不用担心 这只是我们用来使用可选方法声明协议的语法。 首先,我们在协议关键字前面添加@objc
关键字。 然后,在可选方法前面添加@objc optional
关键字。
为什么协议
协议很棒,因为它可以确保您拥有所需的一切。 它不允许您忘记任何事情。 这就好比您上学并且有协议时,必须记住随身携带笔记本电脑和所需的任何学校设备。
协议在哪里
在表视图委托和数据源之前,您可能已经看到了很多协议。 这些是协议的示例。
我们通常使用它们的方式称为类采用。 我们有一个UIViewController并采用了协议。 我只是要命名最常见的用例,以便我们知道那里有什么。 协议用例包括类/结构/枚举的采用,委托模式和面向协议的编程。
最后的评论
希望您喜欢并从我的文章中学到了宝贵的经验。 如果有的话,请点击那个❤按钮让我知道,然后在Medium上关注我。 另外,分享这篇文章,以便您的圈子也可以获取一些知识。
对于那些感兴趣的人,这里是我的LinkedIn。
最后,如果您有任何评论,问题或建议,请随时将其放在下面。
- 如果类中的实例variables的值发生了变化,我该如何触发断点?
- 如何以编程方式在iOS7中设置设备方向?
- 问题与“多个方法命名…”
- MKMapView发布内存
- 做longPress时启用UIPanGestureRecognizer
- 对图像进行下采样以获得更好的内存消耗和UICollectionView性能
- 我无法select要在iTunes Connect上的TestFlight中testing的iOS版本
- 框架未findFirebaseAnalytics
- NSFileManager:enumeratorAtURL:向NSFileManager返回一个不同forms的URL:URLForDirectory