
ios app开发
文章平均质量分 82
jingxianli0922
生活不易,且行且珍惜。工作不易,且做且学习!
展开
-
好想法---抓取crash,我们要在crash产生的时候直接自动修复它!
不仅仅要抓取crash,我们要在crash产生的时候直接自动修复它!作者:陶泽宇 2016-11-28 16:32APP运行时Crash自动修复系统前言目前市面上关于app crash的处理系统,大致都是crash产生了,统计crash信息并且上报到对应的crash统计平台这么一个流程。关于app 运行时的crash,我们是不是可以做的更多?是否可以转载 2017-01-04 10:45:44 · 2351 阅读 · 0 评论 -
oc的浅拷贝和深拷贝
浅拷贝浅拷贝是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间。如:char* str = (char*)malloc(100);char* str2 = str;浅拷贝只是对对象的简单拷贝,让几个对象共用一片内存,当内存销毁时原创 2016-08-10 15:54:33 · 721 阅读 · 0 评论 -
CPU VS GPU
CPU VS GPU 关于绘图和动画有两种处理的方式:CPU(中央处理器)和GPU(图形处理器)。在现代iOS设备中,都有可以运行不同软件的可编程芯片,但是由于历史原因,我们可以说CPU所做的工作都在软件层面,而GPU在硬件层面。 总的来说,我们可以用软件(使用CPU)做任何事情,但是对于图像处理,通常用硬件会更快,因为GPU使用图像对高度并行浮点运算做了优化。由于某些原因,我转载 2016-08-27 21:55:36 · 1946 阅读 · 0 评论 -
深入理解 CocoaPods
CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具。利用 CocoaPods,可以定义自己的依赖关系 (称作 pods),并且随着时间的变化,以及在整个开发环境中对第三方库的版本管理非常方便。CocoaPods 背后的理念主要体现在两个方面。首先,在工程中引入第三方代码会涉及到许多内容。针对 Objective-C 初级开发者来说,工程文件的配置会让人很转载 2016-07-08 23:10:14 · 374 阅读 · 0 评论 -
开发者所需要知道的 iOS 10 SDK 新特性
开发者所需要知道的 iOS 10 SDK 新特性总览距离 iPhone 横空出世已经过去了 9 个年头,iOS 的版本号也跨入了两位数。在我们回顾过去四五年 iOS 系统的发展的时候,不免感叹变化速度之快,迭代周期之短。iOS 7 翻天覆地的全新设计,iOS 8 中 Size Classes 的出现,应用扩展,以及 Cloud Kit 的加入,iOS 9 里的分屏多转载 2016-06-23 11:30:14 · 511 阅读 · 0 评论 -
减小iOS应用程序的大小
本文译自:Reducing the size of my AppQ: 怎样才能让我的程序安装包小一点,让程序的下载和安装更快速?A: 本文收集了一些减小程序安装包大小的相关技巧(当第一次下载和安装程序时)。如果是针对升级程序的话,可以看这篇文章(减小iOS应用程序升级时所需下载的大小)(这与第一次安装使用的工作原理有所不同)。检查应用程序首先是检查.app转载 2016-06-14 11:17:48 · 392 阅读 · 0 评论 -
iOS 10 正式降临,10 大改变!
不经不觉,iOS 的版本号也到达了两位数的大关,尽管外界盛传会像 Mac 一样易为 iOS X,但结果也是继续命名为 iOS 10。随之而来的,就是与版次一样的 10 大改变,除了一堆跟 macOS 的连动的新功能之外,还有的是大家期待已久的小工具以及更强的 Siri 支持。放在十大改变之首的,是重新设计的使用体验,包括了 iPhone 的体感操作,使用者只要拿起手机就转载 2016-06-14 10:50:10 · 377 阅读 · 0 评论 -
iOS热文欣赏
《移动开发必读书单》某一领域的技术人,在他的职业生涯中,一定有一些绕不过去的技术和非技术的知识。有的时候,靠自己摸索、到处偷师,倒也能掌握。但是,这些别人早就趟过去的坎,大多已经有了非常棒的书籍作为总结。看了这些书,脚下的路就要平一些。这个书单,就是为了找到移动领域的这些书。《iOS开发经验总结(上)》《iOS开发经验总结(下)》在iOS开发中经常需要使用的转载 2016-06-02 09:27:35 · 398 阅读 · 0 评论 -
iOS进程通信
总起OS X是MacOS与NeXTSTEP的结合。OC是Smalltalk类面向对象编程与C的结合。iCloud则是苹果移动服务与云平台的结合。上述都是一些亮点,但是不得不说苹果技术中的进程通讯走的是“反人类”的道路。由于不是根据每个节点上最优原则进行设计,苹果的进程间通信解决方案更显得混乱扎堆。结果是,大量重叠,不兼容的IPC技术在各个抽象层随处可见。(除了GCD还有剪贴转载 2016-06-01 16:27:39 · 3285 阅读 · 0 评论 -
SDWebImage源码解析
SDWebImage是一个开源的第三方库,它提供了UIImageView的一个分类,以支持从远程服务器下载并缓存图片的功能。它具有以下功能:1.一个异步的图片加载器。2.一个异步的内存+磁盘图片缓存3.支持GIF、WebP图片4.后台图片解压缩处理5.确保同一个URL的图片不被多次下载6.确保非法的URL不会被反复加载7.确保下载及缓存时,主线程不被阻塞。1。下载原创 2016-05-25 15:06:40 · 6093 阅读 · 0 评论 -
深入了解RunLoop
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。IndexRunLoop 的概念RunLoop 与线程的关系RunLoop 对外的接口RunLoop转载 2016-04-28 11:13:05 · 499 阅读 · 0 评论 -
苹果的“黑魔法”Method Swizzling
Method Swizzling原理Method Swizzling是发生在运行时的,主要用于在运行时将两个Method进行交换,可以将Method Swizzling代码写到任何地方,但是只有在这段Method Swizzling代码执行完毕之后互换才起作用。Method Swizzling是iOS中AOP(面向切面编程)的一种实现方式,我们可以利用苹果这一特性来实现AOP编程。首先,让原创 2016-02-19 16:44:45 · 797 阅读 · 0 评论 -
[深入浅出Cocoa]详解键值观察(KVO)及其实现机理
一,前言Objective-C 中的键(key)-值(value)观察(KVO)并不是什么新鲜事物,它来源于设计模式中的观察者模式,其基本思想就是:一个目标对象管理所有依赖于它的观察者对象,并在它自身的状态改变时主动通知观察者对象。这个主动通知通常是通过调用各观察者对象所提供的接口方法来实现的。观察者模式较完美地将目标对象与观察者对象解耦。在 Objective-C 中有两种使用键值观转载 2015-12-15 23:16:55 · 608 阅读 · 2 评论 -
Xcode 8 和iOS 10 新特性
Xcode 8和 iOS10 新特性Interface Builder 在Xcode8中,苹果推出了更加强大的可视化编辑工具以及预览功能,可以在不运行App的情况下,预览当前XIB或SB在不同屏幕尺寸下的显示。选择一个XIB文件进去,点击下面红框的位置,会出现从3.5寸-5.5存一系列屏幕的选项。 直接点击不同屏幕尺寸,以及横竖屏,切换不同的屏幕显示。在iPad上还可以选择是否分屏。原创 2016-11-04 20:51:53 · 1569 阅读 · 0 评论 -
ios经典面试题总结--内存管理
最近开始参加一些iOS移动端开发的面试,虽然参加的面试不多。但面试官问的问题大致差不多,我根据自己的情况做了一下总结,答案是我看官方文档还有相关资料总结的,如有答的不好的地方,希望批评指正以及交流,谢谢!一、内存管理1.什么是ARC?ARC是automatic reference counting自动引用计数,在程序编译时自动加入retain/release。在对象被创建时retai原创 2015-12-03 22:23:54 · 4581 阅读 · 0 评论 -
优化 App 的启动时间
这是一篇 WWDC 2016 Session 406 的学习笔记,从原理到实践讲述了如何优化 App 的启动时间。App 运行理论main() 执行前发生的事Mach-O 格式虚拟内存基础Mach-O 二进制的加载理论速成Mach-O 术语Mach-O 是针对不同运行时可执行文件的文件类型。文件类型:Executable: 应用的主要二进制Dylib: 动态转载 2016-11-30 14:18:57 · 729 阅读 · 0 评论 -
CocoaPods 都做了什么?
稍有 iOS 开发经验的人应该都是用过 CocoaPods,而对于 CI、CD 有了解的同学也都知道 Fastlane。而这两个在 iOS 开发中非常便捷的第三方库都是使用 Ruby 来编写的,这是为什么?先抛开这个话题不谈,我们来看一下 CocoaPods 和 Fastlane 是如何使用的,首先是 CocoaPods,在每一个工程使用 CocoaPods 的工程中都有一个 Podfile:转载 2016-10-20 13:31:41 · 1135 阅读 · 1 评论 -
神奇的load方法
load方法说明load方法的妙用简化AppDelegate类改进前改进后埋点统计load方法与initialize方法注意事项load方法说明在Objective-C中,绝大多数类都继承自NSObject这个根类,而该类有load方法,可以用来实现初始化操作。其原型如下: + (void)load对于加入运行期系统中的每个类(class)及分类(category)来说,必定会调用此原创 2016-11-08 23:39:39 · 2483 阅读 · 2 评论 -
ios牛人博客
李忠(limboy):来自蘑菇街,RAC实践的国内先驱者http://limboy.me/Bang的博客:目前就职于Tutuso,JSPatch作者http://blog.cnbang.net/王巍的博客:王巍目前在日本横滨任职于LINE。工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发。他的陈列柜中已有多款应用,其中番茄工作法工具非常棒原创 2016-04-07 17:21:02 · 9055 阅读 · 1 评论 -
iOS开发之单例
单例介绍1.什么是单例单例模式是一种常用的软件设计模式。在它的核心结构中包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果系统在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。2.单例用处应用场景: 确保程序运行期某个类,只有一份实例,用于进行资源共享控制。 优势: 使用简单,延时求值,易于跨原创 2016-10-27 22:55:58 · 917 阅读 · 0 评论 -
日消息量突破50亿,小米是如何设计高可用推送系统的?
小米推送是目前国内领先的推送服务提供商,主要为开发者提供快捷、准确、稳定的推送服务。目前接入APP 7000+家,日活跃设备突破3亿,日消息量突破50亿。之所以取得如此的成绩,一方面得益于我们在小米手机上系统级的连接,使我们有更高的消息送达率,另一方面是因为我们本身的服务质量不低于业内其他的推送服务提供商。目前我们在小米手机上的日活为1亿+,而在非小米手机上的日活突破2亿,在iOS转载 2016-10-17 14:07:06 · 1347 阅读 · 0 评论 -
iOS应用架构谈 网络层设计方案
前言网络层在一个App中也是一个不可缺少的部分,工程师们在网络层能够发挥的空间也比较大。另外,苹果对网络请求部分已经做了很好的封装,业界的AFNetworking也被广泛使用。其它的ASIHttpRequest,MKNetworkKit啥的其实也都还不错,但前者已经弃坑,后者也在弃坑的边缘。在实际的App开发中,Afnetworking已经成为了事实上各大App的标准配置。转载 2016-04-11 16:28:22 · 894 阅读 · 0 评论 -
iOS应用架构谈 view层的组织和调用方案
前言《iOS应用架构谈 开篇》出来之后,很多人来催我赶紧出第二篇。这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分。现在好啦,第二篇出来了。当我们开始设计View层的架构时,往往是这个App还没有开始开发,或者这个App已经发过几个版本了,然后此时需要做非常彻底的重构。一般也就是这两种时机会去做V转载 2016-04-11 14:51:15 · 453 阅读 · 0 评论 -
iOS应用架构谈 开篇
缘由之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验。在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢?当时看到这个问题正好在乘公车回家的路上,闲来无聊就答了一把。在zzz在微信朋友圈上追问了几个问题之后,我觉得有必要开个博客专门来讲讲一些个人见解。其转载 2016-04-09 10:06:05 · 323 阅读 · 0 评论 -
iOS9 新特征之一:Bitcode
今天试着用Xcode 7 beta 3在真机(iOS 8.3)上运行一下我们的工程,结果发现工程编译不过。看了下问题,报的是以下错误:1ld: ‘/Users/**/Framework/SDKs/PolymerPay/Library/mobStat/lib**SDK.a(**ForSDK.o)’ does not contain bitcod转载 2016-03-13 20:48:08 · 690 阅读 · 0 评论 -
如何打造一个让人愉快的框架
如何打造一个让人愉快的框架这是我在今年 1 月 10 日 @Swift 开发者大会 上演讲的文字稿。相关的视频还在制作中,没有到现场的朋友可以通过这个文字稿了解到这个 session 的内容。虽然我的工作是程序员,但是最近半年其实我的主要干的事儿是养了一个小孩。 所以这半年来可以说没有积累到什么技术,反而是积累了不少养小孩的心得。 当知道了有这么次会议可以分转载 2016-04-06 14:30:10 · 837 阅读 · 0 评论 -
黑幕背后的Autorelease
黑幕背后的Autorelease我是前言Autorelease机制是iOS开发者管理对象内存的好伙伴,MRC中,调用[obj autorelease]来延迟内存的释放是一件简单自然的事,ARC下,我们甚至可以完全不知道Autorelease就能管理好内存。而在这背后,objc和编译器都帮我们做了哪些事呢,它们是如何协作来正确管理内存的呢?刨根问底,一起来探究下黑幕背后的Au转载 2015-11-21 18:02:15 · 657 阅读 · 0 评论 -
谈Objective-C Block的实现
前言这里 有关于 block 的 5 道测试题,建议你阅读本文之前先做一下测试。先介绍一下什么是闭包。在 wikipedia 上,闭包的定义) 是:In programming languages, a closure is a function or reference to a function together with a referencing env转载 2015-11-23 11:06:26 · 427 阅读 · 0 评论 -
SDWebImage内部实现过程
第三方开源在给我们带来便利的同时也会让我们偷懒,不去真真理解其中的原理。平时项目开发中,经常我们会涉及到图片的下载,可能我们对下面的代码的并不陌生:[self.iconView setImageWithURL:[NSURL URLWithString:user.profile_image_url] placeholderImage:[UIImage imageWithName:@"avatar原创 2015-11-15 21:31:26 · 592 阅读 · 0 评论 -
iOS性能优化:Instruments使用实战
最近采用Instruments 来分析整个应用程序的性能.发现很多有意思的点,以及性能优化和一些分析性能消耗的技巧,小结如下。Instruments使用技巧关于Instruments官方有一个很有用的用户使用Guide,当然如果不习惯官方英文可以在这里找到中文本翻译版本PDF参阅.Instruments 确实是一个很强大的工具,用它来收集关于一个或多个系统进程的性能和行为的数据转载 2015-11-14 20:28:36 · 489 阅读 · 0 评论 -
KVO的内部实现
KVO是实现Cocoa Bindings的基础,它提供了一种方法,当某个属性改变时,相应的objects会被通知到。在其他语言中,这种观察者模式通常需要单独实现,而在Objective-C中,通常无须增加额外代码即可使用。概览这是怎么实现的呢?其实这都是通过Objective-C强大的运行时(runtime)实现的。当你第一次观察某个object 时,runtime会创建一个新的继承原先c转载 2015-10-29 17:16:05 · 485 阅读 · 0 评论 -
调用layoutSubviews各种情况分析
从百度上搜索了一下layoutSubviews的用处,以下是搜索的结果,当然,笔者是会一一验证的.1、 init初始化不会触发layoutSubviews2、 addSubview会触发layoutSubviews3、 设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化4、 滚动一个UIScrollView会触发layoutSub转载 2015-10-27 16:57:08 · 651 阅读 · 0 评论 -
mac下为已有项目配置git,并提交到github
1.先退出xcode2.打开终端 2.1 cd到项目所在目录 2.2 初始化 git init 2.3 添加项目 git add ./ 2.4 提交 git commit -m "添加项目"在添加项目过程中,可能也会遇到一些问题。如2.3 git add ./可能出现$ git add ./warning: You ran 'git add' wit原创 2015-11-06 14:20:00 · 3485 阅读 · 1 评论 -
iOS学习笔记3---delegate五步曲,轻松学会使用delegate
delegate模式原创 2015-11-05 15:11:32 · 1250 阅读 · 0 评论 -
iOS学习笔记2(结合项目)--Category和Extension的区别
在实际项目中,用到Category比较多,Category也很实用,我们可以把一些经常用到或者很通用的功能封装到一个Category里,当其他项目需要相同的功能时,我们可以直接拿来用,不用从零开始写,可以提高项目的开发效率。下面我将重点讲解Category:1.Category是什么?Category用于向已经存在的类添加方法从而达到扩展已有类的目的,在很多情形下Category也是比创建原创 2015-11-02 17:04:18 · 1250 阅读 · 0 评论 -
iOS学习笔记1(结合项目)---oc的@property属性
“属性”(property)有两大概念:ivar(实例变量)、存取方法(access method=getter),即@property = ivar + getter + setter。例如下面的这个类:@interface WBTextView :UITextView@property (nonatomic,copy)NSString *placehold;@pro原创 2015-10-26 19:25:59 · 2402 阅读 · 0 评论 -
Toll-Free Bridging
转自Lancy's Blog什么是 Toll-Free Bridging有一些数据类型是能够在 Core Foundation Framework 和 Foundation Framework 之间交换使用的。这意味着,对于同一个数据类型,你既可以将其作为参数传入 Core Foundation 函数,也可以将其作为接收者对其发送 Objective-C 消息(即调用ObjC类方法转载 2015-07-13 16:41:47 · 441 阅读 · 0 评论 -
iOS设计模式——Category
Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的,在很多情形下Category也是比创建子类更优的选择。新添加的方法同样也会被被扩展的类的所有子类自动继承。当知道已有类中某个方法有BUG,但是这个类是以库的形式存在的,我们无法直接修改源代码的时候,Category也可以用于替代这个已有类中某个方法的实体,从而达到修复BUG的目的。然而却没有什么便捷的途径可以去调用已有类中原有转载 2015-07-13 16:39:32 · 435 阅读 · 0 评论 -
Objective-C Autorelease Pool 的实现原理
内存管理一直是学习 Objective-C 的重点和难点之一,尽管现在已经是 ARC 时代了,但是了解 Objective-C 的内存管理机制仍然是十分必要的。其中,弄清楚 autorelease 的原理更是重中之重,只有理解了 autorelease 的原理,我们才算是真正了解了 Objective-C 的内存管理机制。注:本文使用的 runtime 源码是当前的最新版本 objc4-646转载 2015-11-19 16:47:29 · 428 阅读 · 0 评论 -
17个提升iOS开发效率的必用工具
时间就是金钱。编码效率的提升意味着更多的收入。可是当我们的开发技巧已经到达一定高度时,如何让开发效率更上一层楼呢?答案就是使用开发工具!在这篇文章中,我会向你介绍一些帮助我提升编码速度和工作效率的工具。Xcode插件几乎所有开发者都知道Alcatraz是一个开源的包管理工具,可以让我们更轻松地管理各种插件。接下来就介绍下我的最推荐的10个插件:10.HOStringSe转载 2015-11-20 09:31:51 · 706 阅读 · 0 评论