iOS高级开发系列
文章平均质量分 83
depthlove1
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
iOS汇编教程:ARM(1)和ARM(2)
注:本文由破船译自:raywenderlich。感谢唐巧抽出时间对本文进行double-check。 我们写的Objective-C代码,最终会被转换为机器代码 —— 由ARM处理器能识别的1和0组成。实际上,在机器代码之间,还有一门人类可以阅读的语言 —— 汇编语言。 了解汇编,可以深入到你的代码里面进行调试和优化的探索,并有助于你对Objective-C运行时(runtime)转载 2015-04-22 09:07:52 · 637 阅读 · 0 评论 -
Objective-C Runtime-深入介绍 Messaging 机制
Objective-CObjective-C 扩展了 C 语言,并加入了面向对象特性和 Smalltalk 式的消息传递机制。而这个扩展的核心是一个用 C 和 编译语言 写的 Runtime 库。它是 Objective-C 面向对象和动态机制的基石。Objective-C 是一个动态语言,这意味着它不仅需要一个编译器,也需要一个运行时系统来动态得创建类和对象、进行消息传递和转发。理解 O转载 2015-04-20 09:57:15 · 517 阅读 · 0 评论 -
CFRunLoop
简介简单的说run loop是事件驱动的一个大循环,如下代码所示int main(int argc, char * argv[]) { //程序一直运行状态 while (AppIsRunning) { //睡眠状态,等待唤醒事件 id whoWakesMe = SleepForWakingUp(); //转载 2015-04-20 10:52:38 · 325 阅读 · 0 评论 -
iOS APP 架构漫谈
最近看了一些有关server的东西,一些很简单的东西,不外乎是一些文档规范,另外结合最近看的wwdc的一些video,觉得对软件架构(software architecture)认识又清楚了一些,这里记录下来。software architecture 听上去是一个很大的概念,实际上也包括很多东西,里面的争议也很多。在我看来软件架构最好放在小的场景中理解。问题1我们有2个页面。转载 2015-04-20 13:02:09 · 364 阅读 · 0 评论 -
刨根问底Objective-C Runtime(4)- 成员变量与属性
上一篇笔记讲述了objc runtime中消息和Category的细节,本篇笔记主要是讲述objc runtime的成员变量和属性。习题内容下面代码会? Compile Error / Runtime Crash / NSLog…?@interface Sark : NSObject@property (nonatomic, copy) NSString *name;@end转载 2015-04-20 09:51:11 · 383 阅读 · 0 评论 -
Objective-C Runtime 运行时之一:类与对象
Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。这种特性意味着Objective-C不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。对于Objective-C来说,这个运行时系统就像一个操作系统一样:它让所有的工作可以转载 2015-04-20 10:04:17 · 326 阅读 · 0 评论 -
Objective-C Runtime 运行时之三:方法与消息
前面我们讨论了Runtime中对类和对象的处理,及对成员变量与属性的处理。这一章,我们就要开始讨论Runtime中最有意思的一部分:消息处理机制。我们将详细讨论消息的发送及消息的转发。不过在讨论消息之前,我们先来了解一下与方法相关的一些内容。基础数据类型SELSEL又叫选择器,是表示一个方法的selector的指针,其定义如下:typedef struct objc_selecto转载 2015-04-20 10:06:26 · 291 阅读 · 0 评论 -
Objective-C Runtime 运行时之四:Method Swizzling
理解Method Swizzling是学习runtime机制的一个很好的机会。在此不多做整理,仅翻译由Mattt Thompson发表于nshipster的Method Swizzling一文。Method Swizzling是改变一个selector的实际实现的技术。通过这一技术,我们可以在运行时通过修改类的分发表中selector对应的函数,来修改方法的实现。例如,我们想跟踪在程序中每转载 2015-04-20 10:08:41 · 378 阅读 · 0 评论 -
刨根问底Objective-C Runtime(2)- Object & Class & Meta Class
上一篇笔记讲述了objc runtime中Self 和 Super的细节,本篇笔记主要是讲述objc runtime中关于Object & Class & Meta Class的细节。习题内容下面代码的运行结果是?@interface Sark : NSObject@end@implementation Sark@endint main(int argc, const ch转载 2015-04-20 09:46:35 · 384 阅读 · 0 评论 -
iOS 运行时添加属性和方法
第一种:runtime.h里的方法BOOL class_addProperty(Class cls, const char *name, const objc_property_attribute_t *attributes, unsigned int attributeCount)@implementation SomeClass- (id)init {转载 2015-04-20 09:42:50 · 394 阅读 · 0 评论 -
Objective-C Runtime 运行时之二:成员变量与属性
在前面一篇文章中,我们介绍了Runtime中与类和对象相关的内容,从这章开始,我们将讨论类实现细节相关的内容,主要包括类中成员变量,属性,方法,协议与分类的实现。本章的主要内容将聚集在Runtime对成员变量与属性的处理。在讨论之前,我们先介绍一个重要的概念:类型编码。类型编码(Type Encoding)作为对Runtime的补充,编译器将每个方法的返回值和参数类型编码为一个字符串,转载 2015-04-20 10:06:46 · 397 阅读 · 0 评论 -
微信、陌陌等著名IM软件设计架构详解
对微信、陌陌等进行了分析,发出来分享一下(时间有些久了)电量:对于移动设备最大的瓶颈就是电量了。因为用户不可能随时携带电源,充电宝。所以必须考虑到电量问题。那就要检查我们工程是不是有后台运行,心跳包发送时间是不是合理。流量:对于好多国内大部分屌丝用户来说可能还是包月30M,那么我们必须站在广大用户角度来考虑问题了。一个包可以解决的就一个包。网络:这个也是IM最核心的内容了,转载 2015-04-20 15:44:19 · 745 阅读 · 0 评论 -
iOS学习笔记12—Runloop
一、Runloop简介:Run loops 是线程相关的的基础框架的一部分。一个 run loop 就是一个事件处理 的循环,用来不停的调度工作以及处理输入事件。使用 run loop的目的是让你的线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。Runloop还可以在loop在循环中的同时响应其他输入源,比如界面控件的按钮,手势等。 Run loop 接收输入事件来自两转载 2015-04-20 11:12:00 · 359 阅读 · 0 评论 -
Objc Runtime
概述Objc Runtime使得C具有了面向对象能力,在程序运行时创建,检查,修改类、对象和它们的方法。Runtime是C和汇编编写的,这里http://www.opensource.apple.com/source/objc4/可以下到苹果维护的开源代码,GNU也有一个开源的runtime版本,他们都努力的保持一致。苹果官方的Runtime编程指南Runtime函数Runtime转载 2015-04-20 09:22:31 · 641 阅读 · 0 评论 -
iOS APP 架构漫谈二
上一篇《iOS APP 架构漫谈》简单介绍了information flow的概念。这篇文章简单介绍另一个在编程中非常重要的思想或工具——状态机(State machine)。对大多数计算机专业的家伙们来说,这应该是一门比较难学的课程,里面包含一大堆揪心的名字比如DFA,NFA,还有一大堆各种各样的数学符号,又是编译原理的基础。不过很遗憾,似乎在做完编译原理课程作业之后,很多人再也没有实现过或是用转载 2015-04-20 13:05:04 · 407 阅读 · 0 评论 -
轻松学习之二——iOS利用Runtime自定义控制器POP手势动画
前言苹果在IOS7以后给导航控制器增加了一个Pop的手势,只要手指在屏幕边缘滑动,当前的控制器的视图就会跟随你的手指移动,当用户松手后,系统会判断手指拖动出来的大小来决定是否要执行控制器的Pop操作。nav_pop_origin.gif这个操作的想法非常好,但是系统给我们规定的范围必须是屏幕左侧边缘才可以触发,这样实际使用过程中对于有些产品会产生不便,于是有些app就采取整个屏转载 2015-04-20 09:25:06 · 363 阅读 · 0 评论 -
IOS 多线程 RUNLOOP 机制 (二)
二,何时使用Run Loop对于辅助线程,在需要和线程有更多交互时,才使用Run Loop。比如:1)使用端口或者自定义输入源来和其他线程通讯2)使用线程定时器3)Cocoa中使用任何performSelector...的方法(参考Table:Performing selectors on other threads)4)使线程周期性工作三,如何使用Run Lo转载 2015-04-20 11:03:25 · 331 阅读 · 0 评论 -
IOS 多线程 RUNLOOP 机制 (一)
Run Loop Run Loop就是一个事件处理的循环,用来不停的调动工作以及处理输入事件。使用Run Loop的目的就是节省CPU效率,线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。一,Run Loop剖析Structure of a Run Loop and its sources上图显示了线程的输入源A,基于端口的输入源(Port Sources转载 2015-04-20 11:02:43 · 394 阅读 · 0 评论 -
Objective-C Runtime 运行时之六:拾遗
前面几篇基本介绍了runtime中的大部分功能,包括对类与对象、成员变量与属性、方法与消息、分类与协议的处理。runtime大部分的功能都是围绕这几点来实现的。本章的内容并不算重点,主要针对前文中对Objective-C Runtime Reference内容遗漏的地方做些补充。当然这并不能包含所有的内容。runtime还有许多内容,需要读者去研究发现。super在Objective-转载 2015-04-20 10:10:59 · 341 阅读 · 0 评论 -
iOS应用架构谈 开篇
iOS应用架构谈 开篇iOS应用架构谈 view层的组织和调用方案iOS应用架构谈 网络层设计方案iOS应用架构谈 动态部署方案iOS应用架构谈 本地持久化方案缘由之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验。在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构转载 2015-04-20 13:12:19 · 399 阅读 · 0 评论 -
刨根问底Objective-C Runtime(3)- 消息 和 Category
上一篇笔记讲述了objc runtime中Object & Class & Meta Class的细节,本篇笔记主要是讲述objc runtime的消息和Category。习题内容下面的代码会?Compile Error / Runtime Crash / NSLog…?@interface NSObject (Sark)+ (void)foo;@end@implement转载 2015-04-20 09:48:04 · 442 阅读 · 0 评论 -
刨根问底Objective-C Runtime(1)- Self & Super
前言关于Objective-C Runtime一篇好的文档 : Understanding the Objective-C Runtime译文地址为: http://blog.cocoabit.com/blog/2014/10/06/yi-li-jieobjective-cruntime/Objective-C Runtime源码是开源的,下载地址为: http://ope转载 2015-04-20 09:45:23 · 277 阅读 · 0 评论 -
Objective-C runtime-介绍 Method Swizzling 技巧及如何用 Swizzling 做 Logging
上一篇介绍了 Objective-C Messaging。利用 Objective-C 的 Runtime 特性,我们可以给语言做扩展,帮助解决项目开发中的一些设计和技术问题。这一篇,我们来探索一些利用 Objective-C Runtime 的黑色技巧。这些技巧中最具争议的或许就是 Method Swizzling 。介绍一个技巧,最好的方式就是提出具体的需求,然后用它跟其他的解决方法做转载 2015-04-20 09:57:16 · 336 阅读 · 0 评论 -
Objective-C Runtime 运行时之五:协议与分类
Objective-C中的分类允许我们通过给一个类添加方法来扩充它(但是通过category不能添加新的实例变量),并且我们不需要访问类中的代码就可以做到。Objective-C中的协议是普遍存在的接口定义方式,即在一个类中通过@protocol定义接口,在另外类中实现接口,这种接口定义方式也成为“delegation”模式,@protocol声明了可以呗其他任何方法类实现的方法,协议仅仅是定转载 2015-04-20 10:09:50 · 366 阅读 · 0 评论 -
IOS 多线程 RUNLOOP 机制 (三)
四,配置Run Loop源---配置源的过程就是源的创建调用过程配置过程分为以下几个阶段---定义/创建(一个源)---安装(将输入源安装到所在Run Loop中)---注册(将输入源注册到客户端,协调输入源的客户端)---调用(通知输入源,开始工作)4-1,定义自定义输入源创建自定义输入源需要定义以下内容1)输入源要处理的信息2)使感兴趣的客户端知道如何和输入源交互的调度例程转载 2015-04-20 11:05:36 · 426 阅读 · 0 评论 -
移动App架构设计
移动App架构设计本文主要总结了几种常用的架构模式, 基本是层层递进的转载请注名出处 http://blog.youkuaiyun.com/uxyheaven, 良好的排版在https://github.com/uxyheaven/阅读如果觉得本文不错, 请在csdn给个顶, github给个star.Native app的开发相比传统的项目迭代周期要短很多, 需求的变化也频繁一些, 在开发的转载 2015-04-20 12:57:04 · 550 阅读 · 0 评论 -
iOS并发编程
线程使用Instruments的CPU strategy view查看代码如何在多核CPU中执行。创建线程可以使用POSIX 线程API,或者NSThread(封装POSIX 线程API)。下面是并发4个线程在一百万个数字中找最小值和最大值的pthread例子:#import pthread.h>struct threadInfo { uint32_t * inputVa转载 2015-04-20 15:28:26 · 2778 阅读 · 0 评论
分享