
Swift
offbye
西涛,全栈工程师,架构师,Android和HTML5专家。熟悉Java、Android、JavaScript、Python、Swift等技术。目前专注手机端侧人工智能研究,熟悉tensorflow
展开
-
Swift编程语言引入重大更新
苹果公司在WWDC 2014上发布了全新的编程语言Swift,这门语言引发了开发者的极大热情。问世才一月有余,Swift语言已经进入今年7月的TIOBE编程语言排行榜,并排到了第16位。要知道Go、Scala和Erlang等有很多开发者关注的语言目前的排名分别是30、40和44。当然,之所以能够取得这一骄人成绩,与苹果一手创建的Mac OS和iOS App生态圈是分不开的。近日,苹果发转载 2014-07-16 18:00:31 · 1308 阅读 · 0 评论 -
Swift化零为整:Reduce 详解
即使早在 Swift 正式发布之前,iOS / Cocoa 开发者都可以使用诸如 ObjectiveSugar 或者 ReactiveCocoa 第三方库,实现类似map、flatMap 或 filter 等函数式编程的构建。而在 Swift 中,这些家伙(map 等几个函数)已经入驻成为「头等公民」了。比起标准的 for 循环,使用函数式编程有很多优势。它们通常能够更好地表达你的意图,减少代码的转载 2016-03-11 14:58:02 · 4735 阅读 · 0 评论 -
GCD 和延时调用
原文 http://swifter.tips/gcd-delay-call/因为 Playground 不进行特别配置的话是无法在线程中进行调度的,因此本节中的示例代码需要在 Xcode 项目环境中运行。在 Playground 中可能无法得到正确的结果。GCD 是一种非常方便的使用多线程的方式。通过使用 GCD,我们可以在确保尽量简单的语法的前提下进行灵活的多线程编程。在 “复杂必死” 的多线程转载 2016-02-26 18:45:41 · 2104 阅读 · 1 评论 -
Swift iOS项目archive操作会报错误built without full bitcode解决方法
Swift iOS项目集成阿里云和百度地图SDK时,archive操作会报下面的错误,原因是缺了相关的bitcode,详见参考文章。解决办法是在编译脚本增加配置 xcodebuild OTHER_CFLAGS="-fembed-bitcode" -target XXXX buildld: bitcode bundle could not be generated because '/Users/z原创 2016-02-29 16:29:05 · 6082 阅读 · 2 评论 -
Swift iOS- 手势检测详解
UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有:1,UISwipeGestureRecognizer:滑动(快速移动)123456789101112131415161718class ViewController: UIViewController { override func viewDidLoad() { super转载 2016-03-14 18:58:04 · 3052 阅读 · 0 评论 -
iOS swift动画和特效专题
今天看到一个不错的专题,分享下原文 http://liuyanwei.jumppo.com/2015/10/29/iOS-animation-0.htmliOS动画和特效(一)UIView动画和CoreAnimationiOS动画和特效(二)UIKit力学行为iOS动画和特效(三)MotionEffectsiOS动画和特效(四)controller间的自定义过渡效果iOS动画和特效(五)layer转载 2016-03-01 10:54:59 · 2608 阅读 · 0 评论 -
What's new in Swift 2.2
From https://www.hackingwithswift.com/swift2-2Swift 2.2 is almost here, and cleans up a numberof quirks, adds some missing features, and deprecates – perhaps controversially – some language features.转载 2016-03-28 14:12:13 · 2041 阅读 · 0 评论 -
Swift语言中的@available 和 #available
Swift 2.0 中,引入了可用性的概念。对于函数,类,协议等,可以使用@available声明这些类型的生命周期依赖于特定的平台和操作系统版本。而#available用在判断语句中(if, guard, while等),在不同的平台上做不同的逻辑。@available用法@available放在函数(方法),类或者协议前面。表明这些类型适用的平台和操作系统。看下面一个例子:@available转载 2016-04-14 13:43:09 · 10235 阅读 · 0 评论 -
使用swift开发Cordova插件
最近研究了用swift开发cordova插件的问题,事实证明用swift开发cordova插件是完全可行的,不要再去折腾烦人的oc代码了!主要参考了一个地理围栏插件 https://github.com/cowbell/cordova-plugin-geofence ,然后自己根据需求开发了百度地图标注和带扫描效果的二维码扫描iOS cordova插件,官方的那个实在太差了。用swift开发插件主原创 2016-04-15 15:55:06 · 2776 阅读 · 0 评论 -
从Java/Android到Swift iOS开发:语言与框架对比
我从2009年开始做Android开发,开始接触Swift是在2014年底,当时组里曾经做过一个Demo App,感觉技术还不够成熟没有正式发布。2016年初我们正式使用swift开发上线了销售助手App产品,积累了比较丰富的swift项目实战经验,开源框架都是用的swift版本,大量使用了面向协议和函数式编程。iOS App开发人员基本都是以前安卓版本的开发人员,同时维护安卓和iOS 2个版本,效率很高。 今天分享的主题是Java/Android开发人员如何快速上手Swift iOS开发。主要内容如下:原创 2016-05-04 10:48:41 · 5482 阅读 · 0 评论 -
Python读取iOS安装包IPA中的信息和图片
最近需要对所有的iOS和Android工程通过jenkins持续集成,软件的编译、打包、企业分发版的ipa发布都需要自动化。在做ipa自动化发布时,需要拿到一个app里面相关的信息,比如显示名称、版本号、bundle identifier等等。 然后在Jenkins构建任务中通过增加Python脚本针对每个版本生成IPA,plist和包含itms安装链接的网页。首先需要对iOS ipa包的结构有些原创 2016-05-28 21:23:48 · 6629 阅读 · 1 评论 -
Swift iOS实现把PCM语音转成MP3格式
最近折腾了swift的语音录制识别和转码,这块还是比较坑的,由于语音识别的准确度实测大概也就80%左右,所以还是需要上传录音文件啊。首先是用讯飞语音SDK实现语音录制和识别(语音听写),第一个坑是讯飞SDK只录制了PCM格式的文件,这个文件是原始格式,默认比较大,另外播放器支持也不好,因此需要先把它转成mp3,本来考虑使用系统的AudioConverter转aac格式,不过aac好像不能在浏览器上原创 2016-05-05 18:46:33 · 6801 阅读 · 1 评论 -
iOS App沙盒模型文件目录详解Swift版
本文会比较全面的介绍iOS App沙盒模型的文件夹及其使用场景,以及通过swift取得这些文件夹的方法iOS 中的沙盒机制介绍iOS 中的沙盒机制(SandBox)是一种安全体系。每个 iOS 应用程序都有一个单独的文件系统(存储空间),而且只能在对应的文件系统中进行操作,此区域被称为沙盒。所有的非代码文件都要保存在此,例如属性文件 plist、文本文件、图像、图标、媒体资源等。iPhone沙箱模原创 2016-05-06 10:16:25 · 6985 阅读 · 0 评论 -
Swift Modules for React Native
React Native is an Objective-C application framework that bridges JavaScript applications running in the JSCore JavaScript engine to iOS and Android native APIs.In theory, you write your application l转载 2016-04-22 18:20:13 · 3521 阅读 · 0 评论 -
Swift iOS中的Nullability Annotations
今天折腾使用swift开发React Native的插件,遇到一个参数必须标记成nonnull的问题。用Swift写了个RN简单的模块,遇到了下面的错误: [error][tid:com.facebook.react.CalendarManagerQueue][RCTModuleMethod.m:58] Argument 2 (NSNumber) of CalendarManager.addEven原创 2016-06-03 09:48:09 · 1691 阅读 · 0 评论 -
GMTC2016移动技术大会参会感想
6月24日参加infoq举办的GMTC移动技术大会,并做了一场演讲,还参加了晚上的Swift3.0闭门交流会议,受益很多。6月24日上午是全体大会,首先是手机淘宝的长恭,微信的赵原,京东的王永杰做了移动未来开发展望的开场演讲。然后是Facebook早期员工覃超做了Facebook App演进过程的演讲,主要介绍了Facebook App各个版本的技术实现和经验总结,印象比较深的有下面几点:要选择对用原创 2016-06-27 12:40:48 · 4804 阅读 · 0 评论 -
初探Swift 3.0的重大变化
这个周末抽空看了WWDC2016关于Swift 3.0的的演讲视频,初步感受了下Swift3.0,Swift3.0相对Swift2.2有很大的变化。 比较重要的演讲是Swift API Design Guidelines和What is new in Swift。Swift3.0的Swift的第3个主要版本,目标是安全,快速和有表现力,也是第一个有开源社区参与开发的Swift版本。由于语法和API原创 2016-06-18 23:36:07 · 9527 阅读 · 0 评论 -
Swift - 多线程实现方式(3) - Grand Central Dispatch(GCD)
1,Swift继续使用Object-C原有的一套线程,包括三种多线程编程技术:(1)NSThread(2)Cocoa NSOperation(NSOperation和NSOperationQueue)(3)Grand Central Dispath(GCD)2,本文着重介绍Grand Central Dispath(GCD)GCD是Apple开发的一个多核编程的解决方法,基本概念就是dispatc转载 2016-02-26 11:24:10 · 2837 阅读 · 1 评论 -
Swift2.1关键字 @noescape介绍
@noescape优化编译器编译,swift 2.1引入。函数如果有一个一个参数是closure的话,可以在前面加一个关键字@noescape表示在函数return前closure生命周期结束,可以优化编译。(closure 是引用类型, 可以引用到别的地方,如下:)class A{ var b: (Void -> Void)! func lalala(a: (Void->Voi原创 2016-03-11 11:12:45 · 2748 阅读 · 1 评论 -
理解Swift中map 和 flatMap对集合的作用
map和flatMap是函数式编程中常见的概念,python等语言中都有。借助于 map和flapMap 函数能够很轻易地将数组转换成另外一个新数组。map函数能够被数组调用,它接受一个闭包作为参数,作用于数组中的每个元素。闭包返回一个变换后的元素,接着将所有这些变换后的元素组成一个新的数组。简单的说, map就是映射函数,把一个集合映射成另一个集合。Swift的flatMap不容易理解,flat原创 2016-03-11 11:02:19 · 3729 阅读 · 0 评论 -
使用xcodebuild命令行编译iOS应用遇到的一个错误及解决办法
今天使用自动化生成 iphone App时遇到一个奇怪问题,Xcode编译是好的,但xcodebuild命令行编译iOS编译报下面的错误,在stackoverflow上没有搜到相关的信息,看了搞iOS开发的都不用命令行工具啊。仔细分析错误信息后,找到的解决方法是在工程目录的Frameworks下面删除CoreFoundation.framework/Applications/Xcode原创 2015-05-29 15:59:08 · 4211 阅读 · 0 评论 -
iOS9系统开始对企业发布App进行严格限制
iOS9对企业发布App变得严格了,后面一般的App基本上不能通过企业发布安装了,真正用于企业内部的App第一次安装使用也会变得比较麻烦,可能需要出专门的帮助文档。 最近发现用户的iPhone升级到iOS9 系统后没法安装企业应用了,提示没有找到App, 经排查发现,是因为iOS不允许安装IPA文件和plist文件的Bundle Indentifier 不一致的App了,于是把plis原创 2015-09-21 17:25:12 · 3188 阅读 · 1 评论 -
理解Swift中Optional类型-有和无的哲学
原文连接:http://blog.barat.cc/ios/understanding-swift-optional/nil的遗憾当某个变量或表达式没有任何内容时,在Objective-C中可以使用nil来表示。nil在Objective-C中是一个「野孩子」,void指针指向数字 0,本质上来讲nil就是一个数字。来看看下面的代码在Objective-C会出现什么情况:int i = (int)转载 2016-01-20 09:39:16 · 2356 阅读 · 0 评论 -
Xcode7.2版本carthage包管理器兼容问题解决
昨天尝试新的swift ios项目, 基于swift2.1, 运行时发现缺少一些swift开源库,项目是基于carthage构建的,于是使用carthage update 命令下载开源库,结果下载完运行Xcode发现报CPU架构方面的错误,错误如下:/Users/Documents/iOS/iOS-/Carthage/Checkouts/Alamofire/Source/Alamofire.h:2原创 2015-12-25 10:02:48 · 5031 阅读 · 3 评论 -
深入理解iOS开发中的BitCode功能
深入理解iOS开发中的BitCode功能字数3838 阅读336 评论3 喜欢9前言做iOS开发的朋友们都知道,目前最新的Xcode7,新建项目默认就打开了bitcode设置.而且大部分开发者都被这个突如其来的bitcode功能给坑过导致项目编译失败,而这些因为bitcode而编译失败的的项目都有一个共同点,就是链接了第三方二进制的库或者框架,而这些框架或者库恰好没有包含bitcode的东西(暂且转载 2016-03-01 19:32:30 · 2347 阅读 · 0 评论 -
Swift iOS项目最佳实践汇总
最近准备开始一个Swift iOS项目,收集了一些国外Swift项目最佳实践的文章参考。http://www.raywenderlich.com/86477/introducing-ios-design-patterns-in-swift-part-1http://ios-blog.co.uk/tutorials/swift/developing-ios8-apps-using-swift-par原创 2016-01-14 18:30:28 · 2033 阅读 · 0 评论 -
Swift异常处理:throw和rethrow
Swift异常处理体现了函数式语言的特性,因此我们可以传一个会抛出异常的函数闭包(高阶函数)作为参数传到另一个函数中(父函数),父函数可以在子函数抛出异常时直接向上抛出异常,这时用rethrow关键字表示引用闭包时抛出的异常。throw关键字和Java一样,就是说调用这个函数本身可能会抛出异常。rethrow可以看作是throw的子集,Swift不把rethrow作为完整的类型。例如一个函数不能同原创 2016-03-15 19:00:03 · 6169 阅读 · 0 评论 -
iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard 代码示例:https://github.com/johnlui/Swift-On-iOS/blob/master/Differen
iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard代码示例:https://github.com/johnlui/Swift-On-iOS/blob/master/DifferentWaysToBuildTheUserInterface本系列文章中,我们将一起认识、了解当下 iOS 开发中几种常见的 UI 构建方式,分析他们分别适合的使用场景,以便让我们在以后的开发中,能够在恰当的转载 2016-02-17 15:32:07 · 1312 阅读 · 0 评论 -
iOS Swift判断代码运行在模拟器上
iOS模拟器有些功能没有,比如拍照,因此代码中需要加个模拟器判断,查了好多文章,终于找到了。swift代码如下:struct Platform { static let isSimulator: Bool = { var isSim = false #if arch(i386) || arch(x86_64) isSim = true原创 2016-02-18 15:28:42 · 5885 阅读 · 0 评论 -
iOS开发如何通过UMeng的错误分析解决crash问题
友盟统计有一个很适用的功能是错误分析,通过它我们可以看到App的一些crash错误,对于定位问题有帮助,那么如何根据这些错误日志解决bug呢?今天在友盟的错误分析里面找到了一个这样的错误:12345678910111213141516171819202122232425262728293031323334Application received signal SIGSEGV(null)( 0转载 2016-03-05 10:59:19 · 4012 阅读 · 0 评论 -
Swift高阶函数介绍(闭包、Map、Filter、Reduce)
Swift语言有很多函数式编程的特性,常见的map,reduce,filter都有,初看和python差不多,下面简单介绍下闭包介绍:闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。假设我们需要两个函数,其中一个计算两个数的平方的平均值,另一个计算两个数的立方的平均值,传统的解决方法会是这样:代码func square(a:Float) -> Float { return a原创 2016-02-19 15:07:22 · 3683 阅读 · 2 评论 -
安装Xcode插件包管理器Alcatraz报错解决办法
Alcatraz是Xcode的包管理器,提供了很多插件,色彩样式和模板,如果通过brew安装了coreutils包,使用官方的安装脚本运行时会报错,一个简单的解决办法是把install.sh脚本的第10行mktemp改成/usr/bin/mktemp ,然后运行就可以正常安装了。错误如下:curl -fsSL https://raw.githubusercontent.com/supermarin原创 2016-03-09 15:29:08 · 3008 阅读 · 0 评论 -
Swift iOS tableView static cell动态计算高度
TableView是iOS开发中常用的组件,有些表格因为UILabel包含的文本字数不一样,需要显示的高度也会不同,因此需要动态计算static cell的高度。我用的是static cell,注意每行的高度都需要指定,默认样式的cell高度是44,第三行(row == 2)进行了动态计算,第四行需要根据是否有内容判断是否显示,没有则返回高度0。根据实际尝试和查看国外文章,发现func table原创 2016-02-25 09:52:24 · 2844 阅读 · 1 评论 -
移动端专用数据库Realm介绍
目前我们一个Swift iOS App使用了Realm做数据存储,放弃了CoreData和Sqlite。https://github.com/realmRealm是一个直接运行在手机,平板,可穿戴设备的移动端数据库,Sqlite和ORM框架的替代品。有Android,iOS和js版本。realm-cocoa项目包括iOS/OS X版本的Objc和Swift实现。特性:Mobile-first: R原创 2016-03-09 18:26:05 · 3620 阅读 · 0 评论 -
Storyboard的爱与恨
作为Android,iOS,H5的混合移动团队,我感觉storyboard对我们价值巨大,用了swift和storyboard后,iOS App同样功能swift代码只有android java代码的30%,多版本开发效率明显提升。原文 http://www.cocoachina.com/ios/20160225/15415.html本文为投稿文章,作者:潘晟尽管现在已经是Apple将Storyb转载 2016-02-25 10:17:04 · 1219 阅读 · 0 评论 -
iOS 9开发小技巧:LayoutGuide,Storyboard Reference
前言"小黄鸭"法不仅适用于debug,也适用于学习新知识。表达是最好的吸收。本文原文发表在realm.io上。我翻译并整理成此文。希望可以为国内的iOS朋友提供一些资料。LayoutGuide在iOS9.0 和 OS X10.11中,分别有两个新的类:UILayoutGuide 和 NSLayoutGuide。他们可以作为一种类似View的对象,参与到AutoLayout的布局约束中。作为一种新的转载 2016-02-25 11:30:20 · 2095 阅读 · 0 评论 -
Mac下配置Docker Kitematic使用Proxy加速镜像下载Swift Kitura镜像
这几天打算折腾下IBM的Swift Kitura服务器端框架,按照官方的说明下载kitura-ubuntu docker镜像,结果发现实在是太慢了,于是请教了运维龚总,通过设置公司的docker proxy进行加速,速度果然快,几分钟就下载完了,太给力了。当然也可以用Daocloud的代理啊。下面记录下设置过程。 kitematic是docker推出的GUI工具,使操作docker的方式变得更简单原创 2016-06-22 14:50:00 · 8604 阅读 · 1 评论