FoolishTalk

谈谈技术,聊聊生活

用Swift打造一个轻量级POP的网络请求库

Swift,Tips,Alamofire

我从Objective-C转到Swift已经有好些时间了,Swift起码在iOS开发这块,开源组件已经很完善,为什么还要再造轮子呢? 目的只有一个,为了简化对业务层的操作。 事实上,在写这篇文章的时候,这个轮子已经做好了,所以来聊聊他做了什么: 在Objective-C时候我所遇到很多网络层都是这样的结构: ______________ | | | AF...

Swift高阶函数的使用

Swift,Tips

本文内容基于Swift 4 在读《Swift进阶》的时候发现,Swift提供了很多内置的高阶函数用于数组变形,使用高阶函数最大优势在于,用更少量的代码去解决问题。 map let a = [1,2,3,4,5,6] 如果要把这个数组中的元素每个都+1,按照以前的做法 var b = [Int]() for ele in a { b.append(ele+1...

AVCaptureSession自定义相机获取的UIImage旋转无效

AVFoundation,Tips

在使用AVCaptureSession自定义相机的时候,发现无论横竖拍出来,照片的方向总是不对,参考了下面的两个链接的方法依旧行不通,然后自己想了个办法去解决。 is-uiimage-imagewithciimagescaleorientation-broken-on-ios10 how-to-rotate-a-uiimage-90-degrees 通过使用重力加速计判断手机旋转的方向...

Swift-Tips String截取字符串

Swift,Tips

在Objective-C中我们可以使调substringWithRange的方法达到截取字符串的效果 [@"123" substringWithRange:NSMakeRange(1, 2)]; 在Swift 4之前,也是有类似的方法"ss".substring(with: <Range<String.Index>>) ,但是在Swift 4之后被弃用了,我们...

浅谈iOS在物联网应用中的架构

架构,物联网,iOS

这篇文章在很早之前就在酝酿,我目前的开发生涯中,在现在这间公司之前,都是和硬件打交道的,期间踩了很多坑,尝试了很多不同方式的写法和架构的改变,因此有了些经验,可能文中的一些点大家都比较熟悉,只是在处理上略有不同,接下来我会分享一下自己的做法,作为对自己在iOS物联网方面一个短暂的总结吧。如果有什么不同的意见,也可以在评论区留下评论,可以一起探讨一下问题。 物联网都是些什么? 物联网在iOS...

在UITableView中使用RunLoop遇到的坑

Swift,iOS,Objective-C

在做Pet Day的时候,遇到一个这样的需求,假定tableView中的section初始值为50,在往上或者往下的时候,需要通过计算得知更多的dataSource 然后我一开始的做法,是在- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexP...

swift使用protocol的时候出现循环引用

Swift,iOS,Protocol

在给Alamofire用protocol封装一层业务的时候,定义了以下的协议和方法 protocol BaseRequest { } extension FIDRequest { func complete(_ completionHandler: @escaping ((DataResponse<Any>) -> ())) { let url = ...

自己动手做Swift-Package-Manager

Swift,iOS,Swift Package Manager

Swift Package Manager是苹果自家的包管理工具,他和iOS开发中的Cocoapod或者Carthage类似,但是我们可以从他GitHub文档看到 Note that at this time the Package Manager has no support for iOS, watchOS, or tvOS platforms. 就是SPM是不支持 iOS, wat...

Xcode判断编译环境

CocoaPod,Xcode

有个需要区分是命令行的编译环境还是iOS的环境,这种情况下我用了__APPLE__ 、TARGET_IPHONE_SIMULATOR、TARGET_OS_IPHONE、TARGET_OS_MAC,居然都没判断进去iOS的环境?最后用了一个没怎么见过的宏 #if os(iOS) #elseif os(Linux)//这个也可以判断是在Ubuntu环境 #elseif os(macOS) #e...

Perfect-v2版本服务器升级v3

Swift,Perfect-Server

Perfect在11号的时候就发布了v3版本,v3版本开始支持swift 4,今天正好有空,把Perfect升级了一下,顺便写了个脚本方便集成环境,如果不清楚这个脚本是干嘛的,可以看下我之前的文章如何在阿里云上部署Perfect服务器 #!/bin/sh $ apt-get install make git clang libicu-dev libmysqlclient-dev libpq...