- 博客(66)
- 收藏
- 关注
原创 基于[Moya]-打造更现代化的网络请求库
最近新项目开始尝试 Swift 混编,而我负责搭建底层库。在调研了很多开源的网络库后,最后选择了 Moya,本片文章也是对 Moya 使用过程的一个总结。Moya 是什么?Moya 是一个开源的网络请求库,它底层封装了Alamofire,对外提供简单易用的网络请求的接口。为什么选择 Moya?大家都知道在 Swift 2.0版本发布的时候,官方当时在Protocol-Oriented Program
2017-11-05 15:06:49 2574
转载 关于 Swift Error 的分类
Swift 错误类型的种类Simple domain error简单的,显而易见的错误。这种错误的最大特点是我们不需要关心原因,只需要知道错误发生,并且想要进行处理。用来表示这种错误发生的方法一般就是返回一个 nil 值。在 Swift 中,这类错误最常见的情况就是将某个字符串转换为整数,或者在字典尝试用某个不存在的 key 获取元素:// Simple Domain Error 的例子let nu
2017-11-05 06:54:02 809
转载 Objective-C 引用计数原理
引用计数如何存储有些对象如果支持使用 TaggedPointer,苹果会直接将其指针值作为引用计数返回;如果当前设备是 64 位环境并且使用 Objective-C 2.0,那么“一些”对象会使用其 isa 指针的一部分空间来存储它的引用计数;否则 Runtime 会使用一张散列表来管理引用计数。其实还有一种情况会改变引用计数的存储策略,那就是是否使用垃圾回收(用UseGC属性判断),但这种早已弃用
2017-10-17 17:24:06 887
转载 Objective-C Runtime
本文详细整理了 Cocoa 的 Runtime 系统只是,它使得 Objective-C 如虎添翼,具备了灵活的动态特性。OC 中的方法: [receiver message] ,其实是“给对象发送消息”。其实 [receiver message] 会被编译器转化为:objc_msgSend(receiver, selector)如果消息含有参数,则为:objc_msgSend(receiver,
2017-10-17 11:11:38 706
转载 八段代码彻底掌握 Promise
1.Promise的立即执行性var p = new Promise(function(resolve, reject){ console.log("create a promise"); resolve("success");});console.log("after new Promise");p.then(function(value){ console.log(value);
2017-08-12 12:11:19 652
原创 iOS开发--基础知识之`const`. `static`常量.
对于const修饰符来说, 最简单的理解方式为: const右边修饰的是什么, 则, 什么不可变. 如: int const *p = &c; 此时 p变量的指针不可变, 其指针地址不会变.及指针常量.int * const d = &b; 此时 const直接修饰变量d, 及变量d一旦初始化后, 其指针所指向的地址是不能被改变的. 但可以通过修改所指向的地址的值来改变变量d的值.下面通
2016-11-16 13:29:32 594
原创 iOS开发--"Library not found for -"错误处理
一般情况下,这种错误只会出现在引入存在.a文件的第三方库中, 而处理该错误的方法就是将.a文件的相对路径添加进->Target->BuildSetting->Library Search Path中, 并且添加以$(PROJECT_DIR)/开始的相对路径即可.说说这次遇到错误的前提:今天在做本地化语言处理,发现Cocoapods中的MJRefresh中有自己定义的中文语言. 随将其从Cocoapo
2016-04-20 18:51:08 3017
原创 iOS开发--自定义UIAlertController
在日常开发中,我们往往要满足各种需求,自定义AlertController颜色等,也算其一,那么,如何来自定义系统控件呢?下面提供了一种自定义UIAlertController的方式:通过KVO,我们可以给AlertController设置自定义attributedTitle,和attributedMessag、还可以给按钮设置图片等;同时,我们还可以通过设置TintColor的方式来改变按钮
2015-10-13 11:20:14 7384
原创 iOS开发--iOS9 SearchApi CoreSpotlight的使用
iOS9中, 苹果重新设计了搜索, 并且发布了CoreSpotLight.framework.App中一旦支持并将数据添加进系统搜索库中, 用户一旦使用系统搜索,那么,本App中的数据也会被检索出来. 点击索引项,则会跳转进App的指定页面中.这使得搜索功能变得异常强大. 那如何实现呢? 好了,下面大家可以去下载初始工程然后按着下面步骤来实现自己的搜索工程:首先介绍一下CoreSpotl
2015-09-19 15:33:03 2105
转载 iOS开发--Advanced NSOperations
前言这篇文章是对 WWDC 2015 Session 226: Advanced NSOperations 的一个小结,在那个视频中,Dave DeLong 分享了 NSOperation 的高级玩法,WWDC App 就是基于这套玩法做的,还是挺开阔思路的。NSOperation 和 NSOperationQueue 简介我们知道 NSOperation 可以执行一些
2015-09-06 10:11:59 1233
转载 iOS开发--iOS通知中心扩展制作入门(iOS Extensions)
扩展 (Extension) 是 iOS 8 和 OSX 10.10 加入的一个非常大的功能点,开发者可以通过系统提供给我们的扩展接入点 (Extension point) 来为系统特定的服务提供某些附加的功能。
2015-09-06 10:03:14 790
转载 iOS开发--Kiwi使用进阶 Mock, Stub, 参数捕获和异步测试
Kiwi 是 iOS 的一个行为驱动开发 (Behavior Driven Development, BDD) 的测试框架,我们在上一篇入门介绍中简单了解了一些 iOS 中测试的概念以及 Kiwi 的基本用法。其实 Kiwi 的强大远不止如此,它不仅包含了基本的期望和断言,也集成了一些相对高级的测试方法。在本篇中我们将在之前的基础上,来看看 Kiwi 的这些相对高级的用法,包括模拟对象 (mo
2015-08-29 15:35:29 1773
转载 iOS开发--TDD的iOS开发初步以及Kiwi使用入门
测试驱动开发(Test Driven Development,以下简称TDD)是保证代码质量的不二法则,也是先进程序开发的共识。Apple一直致力于在iOS开发中集成更加方便和可用的测试,在Xcode 5中,新的IDE和SDK引入了XCTest来替代原来的SenTestingKit,并且取消了新建工程时的“包括单元测试”的可选项(同样待遇的还有使用ARC的可选项)。新工程将自动包含测试的targe
2015-08-26 15:57:36 823
转载 iOS开发--CGBitmapContextCreate函数
CGBitmapContextCreate函数参数详解函数原型:CGContextRef CGBitmapContextCreate ( void *data, size_t width, size_t height, size_t bitsPerComponent, size_t bytesPerRow, CGColorSp
2015-08-17 14:18:19 2015
原创 iOS开发--In-app Purchase内购验证方法
IOS7开始:AppStore增加了验证内购(In App Purchasement)的方法, 以确保此次支付是有效地.下面是苹果提供的验证地址:开发测试用:https://sandbox.itunes.apple.com/verifyReceipt产品用:https://buy.itunes.apple.com/verifyReceipt当购买成功时,会得到苹
2015-06-25 10:54:16 6206
原创 iOS开发--iOS7以上自定义leftBarButtonItem后系统滑动返回失效的完美解决方案
iOS7以上自定义leftBarButtonItem后系统滑动返回失效的完美解决方案
2015-05-09 18:38:23 3258
原创 iOS开发--修复iOS7以上自定义LeftBarbuttonItem后向右偏移
修复很简单: 在自己定义的item前边加一个FixedSpace的BarButton. UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFixedSpace target:nil action:nil]; neg
2015-05-09 16:50:12 1725
转载 iOS开发--iOS应用架构谈 view层的组织和调用方案
前言《iOS应用架构谈 开篇》出来之后,很多人来催我赶紧出第二篇。这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分。现在好啦,第二篇出来了。当我们开始设计View层的架构时,往往是这个App还没有开始开发,或者这个App已经发过几个版本了,然后此时需要做非常彻底的重构。一般也就是这两种时机会去做View层架构,基于这
2015-04-29 11:10:40 1095
转载 iOS开发--iOS应用架构谈 开篇
缘由之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验。在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢?当时看到这个问题正好在乘公车回家的路上,闲来无聊就答了一把。在zzz在微信朋友圈上追问了几个问题之后,我觉得有必要开个博客专门来讲讲一些个人见解。
2015-04-29 11:04:45 839
转载 iOS开发--利用NSProxy实现消息转发-模块化的网络接口层设计
前言之前在做项目的时候,所有业务的网络接口方法,全部都写在了一个文件里面,一开始还好,毕竟每个方法的代码也只是十几行,增加、修改也比较容易。但是随着接口的增多,这个文件慢慢居然超过了1000行,里面几十个方法都写在一起,实在是不好维护。虽然保持这样也没有什么,多用用Cmd+F就能找到。但是,真是越看越不顺眼
2015-04-05 12:37:19 2848 1
转载 iOS开发--一个工程中添加多个工程
下面举例了添加ZXing到自己的project中,其他的类似:After an upgrading to Xcode 4, I have been having trouble compiling my own ZXing iOS project.So I decided to explain you how to install easily ZXing with Xco
2015-03-25 13:56:29 898
原创 iOS开发--KVC & KVO
键值编码允许开发者通过名字访问对象属性, 而无需调用明确的存取方法, 这样,就可以在运行时确定属性的绑定, 而不是在编译时确定.(可以动态访问属性)例如可以通过[object valueForKey: someProperty];表达式来请求由字符串变量someProperty命名的属性值, 也能用[object setValue: someValue forKey: someProperty
2015-02-08 14:12:04 914
原创 iOS开发--使用崩溃地址找BUG
根据所报错误来找错误行数:cd进所打包成功后的文件夹:cd /Users/Andou/Desktop/JobProject/备份/闪传备份/Xender\ Backup/InternationalVersion/Xender\ 1.4.0/ExMessager\ 15-1-19\ 下午5.54.xcarchive/dSYMs 记得每次上传到itunes后都要将打包文件.
2015-01-30 10:07:35 1007
原创 iOS开发--使用CocoaLumberjack-DDLog
DDlog库可以让Xcode的输出台变得五彩缤纷,同时可以控制打印的开关.对于调试很是方便. 下面介绍一下安装方法. 一、安装xCode扩展插件XcodeColors 1.下载地址:https://github.com/robbiehanson/XcodeColors 2.下载完成后,打开XcodeColors项目,编译即可。 3.完全退出xC
2014-12-20 23:26:50 3134
转载 iOS开发--CocoaPods pod install/pod update更新慢的问题
最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:pod install --verbose --no-repo-updatep
2014-12-13 19:19:30 935
转载 iOS开发--Xcode6: CocoaPods 错误 target overrides the `OTHER_LDFLAGS`
CocoaPods 错误 target overrides the `OTHER_LDFLAGS`...Xcode 升级到 6.0 后,更新 CocoaPods,出现了如下的警告[!] The `Paopao [Debug]` target overrides the `PODS_ROOT` build setting defined i
2014-12-12 15:11:54 2738
原创 iOS开发--使用cocoapods更新工程报错
在使用CocoaPods添加第三方库时出现:Installing AFNetworking (2.5.0)[!] Error installing AFNetworking[!] /usr/bin/git clone https://github.com/AFNetworking/AFNetworking.git /Users/dev
2014-12-06 13:21:45 1900
原创 iOS开发--使用Xcode6给项目重命名
第一步:双击你的项目名, 然后修改你想修改后的名字修改后:会弹出视图,点击Rename点击Manage Schemes:选中项目名后按ENTER键,修改为自己的名字修改后:这时你的项目名已经修改成功!
2014-11-27 09:29:08 1360
原创 iOS开发--iOS8中设置TableViewSepartorInset
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ if ([tableView respondsToSelector:@selector(setSeparatorInset:)])
2014-10-28 16:19:57 1354
转载 iOS开发--TableView向上偏移的情况
if (IOS7_OR_LATER) { self.edgesForExtendedLayout = UIRectEdgeNone; self.extendedLayoutInclud
2014-10-14 22:50:51 5111
原创 iOS开发--iTunes被拒
被拒原因:Dear developer,We have discovered one or more issues with your recent delivery for "++". To process your delivery, the following issues must be corrected:Your binary is not optimized fo
2014-09-19 13:51:49 4508
原创 iOS开发--跳转进入AppStore评论页面
NSString *appID = @"898129576"; NSString *url = [NSStringstringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@",
2014-09-19 11:41:45 2282
转载 iOS开发--使用NSTimeInterval获取2个时间间隔
想在程序开始或者进入某个界面 ,到结束程序或退出某个界面,获取到这个持续时间. 获取到这个时间还需要转化一个取得时分秒.-(NSString *)getCurrentTime{ NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyy
2014-09-09 12:37:21 3583
原创 iOS开发--播放系统注册声音
注:此声音可以和AVAudioPlay一同播放,类似于系统提示音。首先要yin#import 代码如下:-(void)playSendSound{ NSString *string = [[NSUserDefaults standardUserDefaults] objectForKey:@"SOUND_PLAY"]; //这里用string来控制是否播放Sound.
2014-09-04 09:25:55 1331
原创 iOS开发之音乐播放----监听耳机拔插
添加监听事件: [AVAudioSession sharedInstance]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioRouteChangeListenerCallback:)
2014-08-28 10:13:33 5273
原创 iOS开发之音乐播放----监听系统音量变化
需要在didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中加入一下监听事件:
2014-08-28 09:36:19 2930
转载 POP — Facebook开源动画引擎
项目主页:https://github.com/facebook/pop小编语:看到POP这个东西的时候,小编兴奋了。Facebook的Paper的动画效果还用说吗??如果是自己写的话。。各种难以实现呀。现在它开源了!!github上没有什么Demo,只找到部分学习资料,先发上来提供大家研究一下。Demo:PopTut:一个使用POP做动效的示例工程。http:
2014-08-04 17:26:54 1144
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人