阅读更多

1顶
0踩

移动开发

原创新闻 盘点开发者最喜爱的Swift技巧

2014-12-29 10:16 by 正式编辑 cao345657340 评论(1) 有4835人浏览
摘要:Swift发布才半年左右,却已深得众多开发者的青睐,也有了许多学习资源、项目和开发工具。在本文中,来自objc.io、LinkedIn等各个公司的软件工程师及资深开发者总结了自己在接触Swift过程中最喜爱的贴士与技巧。

屈指算来,Swift语言才发布半年左右,却已深得众多开发者的青睐,也有了许许多多的学习资源、项目和工具。在本文中,来自objc.io、LinkedIn等各个公司的软件工程师及资深开发者总结了自己在接触Swift过程中最喜爱的贴士与技巧,有些技巧即使是很早就入坑Swift的开发者都不知道,不妨一起来了解一下吧。

Natasha Murashev——Capital One iOS工程师、Natasha The Robot博主

当我在构建iOS应用时,Swift能够允许更多的函数式编程方法,所以,为了能在改善Swift代码时做出更好的决策,我一直在学习函数式编程。迄今为止,我最喜欢的函数方面的Swift资源有:

  • 功能型函数——能轻松更改函数,让代码更独立、可测试。
  • 包装类型——我喜欢用可读且安全的类型别名来编写代码。
  • 类型设计——在设计程序时大幅使用正确的类型,有利于编译器调试。
  • Swift中柯里化函数的运用——在Haskell中,某种类型的函数指针只能指向特定参数类型和数目以及返回值类型的函数,而Swift则允许“currying”或部分应用函数,从而实现代码块可重复使用。
  • Swift奇妙的差错处理——与Objective-C相比,我特别喜欢这种简单、可读性强而又安全的错误处理方式。
  • 面向对象编程直达车——它为在代码中进行错误处理提供了一种最快捷的方式,于程序猿而言,最幸福之事莫过于此。
  • Swift函数式编程——这是一本关于Swift函数比较深度的书籍,我每次重新读过时都会发现不一样的点,非常适合想要深入研究Swift函数以及如何将其运用到iOS代码中的开发者们阅读。

Chris Eidhof——objc.io创始人、《Swift函数式编程》作者

快速排序(Quicksort)——Swift中的快速排序实现可以说是前无古人后无来者,大多数Quicksort实现都需使用固定的内存,而Swift则能以最简洁清晰的程序实现快排:

func qsort(input: [Int]) -> [Int] {  
    if let (pivot, rest) = input.decompose {  
        let lesser = rest.filter { $0 < pivot }  
        let greater = rest.filter { $0 >= pivot }  
        return qsort(lesser) + [pivot] + qsort(greater)  
    } else {  
        return []  
    }  
}  

 Austin Zheng——LinkedIn高级软件工程师

我认为,精妙的Swift技巧应当如此:开发者可以通过创建一个已定义标准类的闭包来为匿名类实例设置委托,而闭包则将返回该类的一个新实例,并运行。示例代码如下:

import Foundation   
protocol SomeDelegateProtocol : class {  
    func firstFunc() -> String  
    func secondFunc() -> Bool  
}  
class MyClass {  
    weak var delegate : SomeDelegateProtocol?  
}  
class Parent {  
    var child : MyClass  
    var strongDelegate : SomeDelegateProtocol? = nil  
    func setup() {  
        strongDelegate = {  
            // [self]   // Original version had this not commented; it's commented to let people know it was a typo  
            class SomethingClass : SomeDelegateProtocol {  
                func firstFunc() -> String { return "foo" }  
                func secondFunc() -> Bool { return true }  
            }  
            return SomethingClass()  
        }()  
        child.delegate = strongDelegate  
    }  
    init() {  
        self.child = MyClass()  
        self.setup()  
    }  
}  
var bleh = Parent()  
var result = bleh.child.delegate?.firstFunc()  
println("Got \(result!)")  

 Clay Smith——PagerDuty高级软件工程师

下面是我在处理所有Xcode问题(尤其是sourcekit)时所使用的最基本的Bash alias(命令别名),用来删除Xcode中的Derived Data:

alias sourcekitsad='rm -rf ~/Library/Developer/Xcode/DerivedData'  

 Michael Helmbrecht——Motiv UX设计师兼iOS开发者

于我而言,最喜欢的一点应该是Swift能在String类型和NSString类型中自动转换,当无法打印String时,通过直接调用NSString的-description方法即可实现。

David Kobilnyk——ShopRunner软件工程师

作为一门编程语言,我觉得Swift还不够优雅,而我也并没有发现什么太特别的技巧,只是很喜欢原始类型、枚举一起使用,就像这样:

public enum ReminderTimeType: String {  
    case Evening = "this evening"  
    case Tomorrow = "tomorrow"  
    case Weekend = "this weekend"  
    case NextWeek = "next week"  
    case CoupleWeeks = "in a couple weeks"  
    case CoupleMonths = "in a couple months"  
    case Someday = "someday"  
    public static let array = [  
        Evening, Tomorrow, Weekend, NextWeek, CoupleWeeks, CoupleMonths, Someday  
    ]      
    public static let rawArray = array.map { $0.rawValue }  
}  

 Alexis Gallagher——高级iOS开发者

要说我最喜欢的Swift技巧,应该有两个,一个是在REPL中,handy函数可直接用于获取表达式静态类型,而想要获取任意实例值的类型名称则可直接调用_stdlib_getDemangledTypeName。

func typeof<T>(@autoclosure () -> T) -> Any.Type { return T.self }  

 JP Simard——Realm iOS工程师

开发者可以直接使用nm工具通过libswiftCore.dylib来获取所有私有的Swift标准库函数,比如_stdlib_getTypeName()、_stdlib_demangleName()和_stdlib_conformsToProtocol():

cd `xcode-select -p`/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx  
    nm -a libswiftCore.dylib | grep "T _swift_stdlib_"  

 Warren Moore——Metal By Example》作者

当结构体中的所有成员属于同一类型时(比如浮点型),通过Swift,开发者可以将其中的同类数组作为一个指针指向结构体中的成员类型。这一方法,让我能够非常简便地去创建顶点数据的Metal缓冲区,而无需其他多余的复杂操作。

Mustafa Furniturewala——Coursera软件工程师

我最喜欢的Swift资源是Swifter对我来说,它是编程必备的参考指南,而最喜欢的技巧则是开发者可以使用任意的Swift函数来实现Objective-C风格的动态分配。

文章来源:Realm

来自: CSDN
1
0
评论 共 1 条 请登录后发表评论
1 楼 神罗天征 2015-01-05 17:02
                 

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 盘点iOS开发者必看的105个全球最佳博客

    如你所知,互联网上高质量的iOS博客并不缺乏,但我决定再过滤一下,去芜存菁,找出最精华的那些与你们分享。 无论是想要与同侪沟通的iOS开发老手,还是渴望学习以提高移动应用开发技巧的大学新鲜人,都能从这些...

  • 盘点一些iOS开发技巧:Swift和Objective-C

    盘点一些iOS开发技巧:Swift和Objective-C 对苹果开发者来讲,2014年是令人难以置信的一年。在这短短的一年中发生了如此多的变化:在充满吸引力的Swift面前,我们几乎忘了之前是如何痴迷OC;以及充满想象力的iOS8和...

  • 新年之际,盘点一些APP开发技巧

    (原文:Reader Submissions - New Year's 2015作者:Mattt Thompson 译者... 回顾过去一年发生在我们身边的事情时,有一点不得不提:对苹果开发者来讲,2014年是令人难以置信的一年。在这短短的一年中(有关APP的开...

  • 文章目录(三周年)

    709 03.19 CSS实现一个粒子动效的按钮 708 03.18 Github 收购 npm 707 03.17 Chrome 开发者工具各种骚技巧 706 03.16 别用收费的Postman了,考虑一下免费开源的Postwoman 705 03.15 iOS 14不跳票 6月见!...

  • 阅读目录(置顶)(长期科技领域知识)

    第五期:干货总结:中级前端工程师必须要掌握的27个JavaScript 技巧 第六期:华为高管:要自主开发Google的替代产品还需很多年 第七期:蚁群优化算法?智商不高也能解决大问题 第八期:IT人员拼命用系统取代别...

  • 收藏!!BAT 程序员们常用的开发工具

    WePY 项目启动于 2017 年 11 月份, 是小程序最早的框架之一,是一款让小程序支持组件化开发的框架,通过预编译的手段让开发者可以选择自己喜欢的开发风格去开发小程序。框架的细节优化,Promise,Async Functions ...

  • 遇见OFFER,阿里云最强技术团队现身招聘,“职”为你来

    负责阿里云开放平台以及相关开发者工具的研发和创新,参与相关产品和解决方案的设计、研发和生态建设; 3. 研究和探索Web技术、Serverless等热点技术,拓展云前端能力边界及阿里云商业边界。 职位要求: 1. 三年...

  • Eclipse安装SVN插件的两种方式

    【预测与盘点】你跟上技术趋势了么? 12-26 系列直播:《数据分析与挖掘经典案例实战》! 12-19 大龄程序员的发展方向是做管理还是继续写程序? 12-14 据说,这是一个具有超能力的神图(A)谱...

  • go技术文章梳理(2017)

    年终盘点!2017年超有价值的Golang文章 http://colobu.com/2017/12/28/top-golang-articles-of-2017/ Golang 套件管理工具 Glide https://cainmaila.github.io/2017/12/27/golang-glide/ Gopher...

  • 程序员转行为什么这么难--[转]

    这话反过来就成了软件开发者的魔咒:当我们发现了自己的追求,想要离开时,我们已经获得的薪酬水平就会成为我们的羁绊。 干过几年开发的朋友,想转行,薪水都会经历一个断崖式下坠,这是多数人不能承受的,也是人...

  • iOS-自学用到的资源

    盘点iOS开发者必看的105个全球最佳博客 Cocoa Is My Girlfriend 另外一些比较好的基础技能博文: 唐巧 基础技能 码农人生 关于音频写的很细致 调试技巧+越狱 图片缓存库的制作 设计模式 分分钟制作bug上报工具...

  • Python项目-自动办公-59 PPT_pptx_在PPT中写入图片和表格.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

  • Python项目-实例-20 快递查询.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

  • 杂货产品检测43-YOLO(v5至v9)、CreateML、Paligemma、TFRecord、VOC数据集合集.rar

    杂货产品检测43-YOLO(v5至v9)、CreateML、Paligemma、TFRecord、VOC数据集合集.rarIPCV分配-V6 2024-01-21 6:10 PM ============================= *与您的团队在计算机视觉项目上合作 *收集和组织图像 *了解和搜索非结构化图像数据 *注释,创建数据集 *导出,训练和部署计算机视觉模型 *使用主动学习随着时间的推移改善数据集 对于最先进的计算机视觉培训笔记本,您可以与此数据集一起使用 该数据集包括7012张图像。 家庭废物以createMl格式注释。 将以下预处理应用于每个图像: *像素数据的自动取向(带有Exif-Arientation剥离) *调整大小为640x640(拉伸) 没有应用图像增强技术。

  • 绝对给力的源码,在线音乐播放器完整项目.zip

    Android 毕业设计,Android 毕业设计,小Android 程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

  • 毕业设计-0-1背包问题动态规划模型Python代码.rar

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、本项目仅用作交流学习参考,请切勿用于商业用途。

  • 保质量的周期边界2dAllen-Cahn方程求解器:纯隐格式迭代解

    谁喜欢谁下载,没啥商业价值,comsol也能做,不过我这产量更大

  • Python项目-游戏源码-10 植物大战僵尸.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

  • 实现获取视频的缩略图(ThumbnailUtils),并且播放.zip

    Android 毕业设计,Android 毕业设计,小Android 程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

Global site tag (gtag.js) - Google Analytics