聪明地使用Swift扩展
对Swift来说是新手的开发人员,对于他们来说,扩展可能是一个新名词,所以我想与Swift扩展及其使用分享我的经验。
什么是扩展名?
扩展为现有的类,结构,枚举或协议类型添加了新功能。
-Apple Swift开发人员参考
快速扩展使您可以将行为添加到任何Type以及现有Type中 。 让我告诉你它是如何工作的。
快速扩展还有其他用途,可以提高代码的可读性。 它还可以帮助您使代码井井有条。
协议一致性
当我们需要确认一个或多个协议时,可以将其实现为该类的扩展。
这就是我们可以确认协议的方式。 我们可以将协议的所有功能放到扩展模块中。 会的。 我通常使用pragma标记来执行此操作,因为这样做是为了提高代码的可读性。 实用标记在跳转栏中添加视觉标记,有助于在文件内快速导航。
我们可以使用UITableViewDelegate , UITableDataSource , UIWebDelegates等预定义协议进行此操作 。我们可以分隔每个协议
带有单独的实用标记的确认,以便我们可以轻松地在文件中导航。
代码分离
这是将整个代码分成多个命名串的另一种方法。 我们仅收集具有共同或联合任务的行为组。 见图。
保留初始化程序
当我在需要在我的一个项目中保留结构的初始化程序时学会了这一技巧。 当我做到这一点时,我就像哇……扩展使我的生活变得很认真,很高兴与大家分享这一点。 让我举一个例子,这对您来说更有意义。
在上面的示例中,有一个名为Address的结构,其属性为houseNumber,city和state。 Swift提供了一个免费的初始化器,可用于实例化Address结构的对象。 对于Struct,我们有一个免费的初始化程序,用于初始化其所有属性(请参见上图中的蓝色部分)
如果我们需要自定义初始化程序怎么办? 在某些情况下可能需要自定义初始化程序。 因此,我们通常要做的是看一下。
我们添加了自定义初始化程序,就像我在上图中添加的一样。 现在我要讲的重点是不要失去您的注意力。 当我们添加这样的自定义初始化程序时,我们只是丢失了默认的初始化程序。 现在,我们只有定制的初始化程序来实例化Address结构的实例。
那么我们如何克服这个缺点呢? 是的,您是对的,Swift扩展可以解决此缺点。 当我们添加自定义初始化程序作为扩展时,会发生什么? 让我们看看
瞧,现在我们有了两个初始化器。 华友世纪🙂
摘要
Swift扩展使您可以向任何类,结构或枚举添加行为,即使您无权访问原始源代码(就像我们对UIColor所做的那样)。 还使我们能够以井井有条的方式来编写智能代码,使代码更整洁,更易读。 现在轮到您了,去玩扩展程序。
所以,伙计们,我已经分享了我在Swift扩展方面的经验,我仍在学习和探索更多的智能编码方法。 让我知道您的想法,欢迎提出建议。
- 调整UIWebView中的文本大小 – Swift 3
- 用drawRect设置UIView backgroundColor:
- 如何重写@synthesized getters?
- 使用惰性变量而不是杀死对象
- 升级到iOS 11.3之后,每个apple-mobile-web-app都无法显示全屏幕
- 如何防止JSONKit从ASP.NET JSONdate格式转义反斜杠?
- X因素:支持iPhoneX
- 在一个视图中的几个tableviews
- launchOptions’UIApplicationLaunchOptionsLocalNotificationKey’是否包含NSDictionary或UILocalNotification