摘要:
kvo概述 kvo,全称Key-Value Observing,它提供了一种方法,当对象某个属性发生改变时,允许监听该属性值变化的对象可以接受到通知,然后通过kvo的方法响应一些操作。kvo实现原理 kvo是如何实现通知对象的呢,其实这是通过Objective-C强大的runtime运行时机制实... 阅读全文
随笔档案-2015年12月
KVC, KVO实现原理剖析
2015-12-31 16:44 by JG2014, 255 阅读, 收藏,
摘要:
iPhone程序开发 KVO/KVC实现机理分析是本文要介绍的内容,不多说,直接进入话题。我们来看详细内容。Objective-C里面的Key-Value Observing (KVO)机制,非常不错,可以很好的减少浇水代码。关于KVO的学习,可以参考文章:《Key-Value Observing快... 阅读全文
KVC/KVO原理详解及编程指南
2015-12-30 13:21 by JG2014, 410 阅读, 收藏,
摘要:
前言:1、本文基本不讲KVC/KVO的用法,只结合网上的资料说说对这种技术的理解。2、由于KVO内容较少,而且是以KVC为基础实现的,本文将着重介绍KVC部分。一、简介KVC/KVO是观察者模式的一种实现,在Cocoa中是以被万物之源NSObject类实现的NSKeyValueCoding/NSKe... 阅读全文
_int、NSInteger、NSUInteger、NSNumber的区别和联系
2015-12-28 21:58 by JG2014, 324 阅读, 收藏,
摘要:
1、首先先了解下NSNumber类型:苹果官方文档地址:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Referenc... 阅读全文
查找算法
2015-12-26 13:27 by JG2014, 207 阅读, 收藏,
摘要:
顺序查找:int FindBySeq(int * ListSeq ,int ListLength, int KeyData){int tmp = 0;int length = ListLength;for(int i = 0;i key) high = mid - 1; //如果比key... 阅读全文
如果将synthesize省略,语义特性声明为assign retain copy时,自己实现setter和getter方法
2015-12-26 12:35 by JG2014, 268 阅读, 收藏,
摘要:
如果将synthesize省略,并且我们自己实现setter和getter方法时,系统就不会生成对应的setter和getter方法,还有实例变量1,当把语义特性声明为assign时,setter和getter时方法内部实现- (void)setName:(NSString *)name{_name... 阅读全文
iPhone开发教程之retain/copy/assign/setter/getter
2015-12-26 12:33 by JG2014, 302 阅读, 收藏,
摘要:
assign: 简单赋值,不更改索引计数copy: 建立一个索引计数为1的对象,然后释放旧对象retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为11. 接触过C,那么假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你... 阅读全文
关于block使用的5点注意事项
2015-12-26 09:52 by JG2014, 221 阅读, 收藏,
摘要:
1、在使用block前需要对block指针做判空处理。不判空直接使用,一旦指针为空直接产生崩溃。if (!self.isOnlyNet) { if (succBlock == NULL) { //后面使用block之前要先做判空处理 return; } id data... 阅读全文
Block的引用循环问题 (ARC & non-ARC)
2015-12-26 09:17 by JG2014, 198 阅读, 收藏,
摘要:
2010年WWDC发布iOS4时Apple对Objective-C进行了一次重要的升级:支持Block。说到底这东西就是闭包,其他高级语音例如Java和C++已有支持,第一次使用Block感觉满简单好用的,但是慢慢也遇到很多坑。本文聊聊ARC和non-ARC下Block使用中的引用循环问题,最近遇到... 阅读全文
浅谈iOS中MVVM的架构设计与团队协作
2015-12-24 12:22 by JG2014, 179 阅读, 收藏,
摘要:
说到架构设计和团队协作,这个对App的开发还是比较重要的。即使作为一个专业的搬砖者,前提是你这砖搬完放在哪?不只是Code有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了。一个好的工程框架不进可以提高团队的协作效率,同时还可以减少代码的冗余度和耦合性,合理的分工与系统的架构设计... 阅读全文
iOS: ARC和非ARC下使用Block属性的问题
2015-12-24 11:49 by JG2014, 327 阅读, 收藏,
摘要:
1. Block的声明和线程安全Block属性的声明,首先需要用copy修饰符,因为只有copy后的Block才会在堆中,栈中的Block的生命周期是和栈绑定的,可以参考之前的文章(iOS: 非ARC下返回Block)。另一个需要注意的问题是关于线程安全,在声明Block属性时需要确认“在调用Blo... 阅读全文
Objective-C Autorelease Pool 的实现原理
2015-12-23 23:01 by JG2014, 266 阅读, 收藏,
摘要:
内存管理一直是学习 Objective-C 的重点和难点之一,尽管现在已经是 ARC 时代了,但是了解 Objective-C 的内存管理机制仍然是十分必要的。其中,弄清楚 autorelease 的原理更是重中之重,只有理解了 autorelease 的原理,我们才算是真正了解了 Objectiv... 阅读全文
class-dump 复制到/usr/bin目录不可写,Operation not permitted 解决办法
2015-12-11 10:43 by JG2014, 7776 阅读, 收藏,
摘要:
许多升级了OSX 10.11的朋友在配置class-dump的时候,会发现书上推荐的class-dump存放目录/usr/bin不再可写,如下所示:Operation not permitted把class-dump放到/usr/local/bin下,虽然每次执行class-dump都不需要输入全路... 阅读全文
Auto Layout 使用心得
2015-12-08 21:43 by JG2014, 375 阅读, 收藏,
摘要:
此系列文章代码仓库在https://github.com/johnlui/AutoLayout,有不明白的地方可以参考我的 Auto Layout 设置哦,下载到本地打开就可以了。简介Auto Layout 是苹果在 Xcode 5 (iOS 6) 中新引入的布局方式,旨在解决 3.5 寸和 4 寸... 阅读全文
iOS-关于微信支付
2015-12-07 17:08 by JG2014, 642 阅读, 收藏,
摘要:
突然发现的一篇文章,这位博主介绍的还是挺详细的,给大家分享一下不懂的也可以咨询我qq:5647026401、申请接入详见 微信支付申请接入 。创建应用+审核通过,你将得到:APP_ID、APP_SECRET、APP_KEY、PARTNER_ID 。那就可以开始实现支付功能的接入。2、业务流程不管是客... 阅读全文
IOS应用安全(五):高级Runtime分析和操作
2015-12-07 15:15 by JG2014, 608 阅读, 收藏,
摘要:
在前一篇文章,我们学习如何安装Cycript在你的苹果设备,hook进程获取其相关属性信息。这一篇文章,我们将介绍高级的runtime分析技术,在应用运行时获取或者修改指定class的信息(方法、实例变量)。找到指定类的方法在应用运行期间分析它的流程,有助于我们知道是哪个类被哪个view contr... 阅读全文
Objective-C Runtime 运行时之六:拾遗
2015-12-04 22:35 by JG2014, 140 阅读, 收藏,
摘要:
super在Objective-C中,如果我们需要在类的方法中调用父类的方法时,通常都会用到super,如下所示:@interface MyViewController: UIViewController@end@implementation MyViewController- (void)view... 阅读全文
Objective-C Runtime 运行时之四:Method Swizzling
2015-12-04 22:35 by JG2014, 135 阅读, 收藏,
摘要:
理解Method Swizzling是学习runtime机制的一个很好的机会。在此不多做整理,仅翻译由Mattt Thompson发表于nshipster的Method Swizzling一文。Method Swizzling是改变一个selector的实际实现的技术。通过这一技术,我们可以在运行时... 阅读全文
Objective-C Runtime 运行时之五:协议与分类
2015-12-04 22:35 by JG2014, 239 阅读, 收藏,
摘要:
Objective-C中的分类允许我们通过给一个类添加方法来扩充它(但是通过category不能添加新的实例变量),并且我们不需要访问类中的代码就可以做到。Objective-C中的协议是普遍存在的接口定义方式,即在一个类中通过@protocol定义接口,在另外类中实现接口,这种接口定义方式也成为“... 阅读全文
Objective-C Runtime 运行时之三:方法与消息
2015-12-04 22:34 by JG2014, 181 阅读, 收藏,
摘要:
基础数据类型SELSEL又叫选择器,是表示一个方法的selector的指针,其定义如下:typedef struct objc_selector *SEL;objc_selector结构体的详细定义没有在头文件中找到。方法的selector用于表示运行时方法的名字。Objective-C在编译时,会... 阅读全文
Objective-C Runtime 运行时之二:成员变量与属性
2015-12-04 22:33 by JG2014, 188 阅读, 收藏,
摘要:
类型编码(Type Encoding)作为对Runtime的补充,编译器将每个方法的返回值和参数类型编码为一个字符串,并将其与方法的selector关联在一起。这种编码方案在其它情况下也是非常有用的,因此我们可以使用@encode编译器指令来获取它。当给定一个类型时,@encode返回这个类型的字符... 阅读全文
Objective-C Runtime 运行时之一:类与对象
2015-12-04 15:32 by JG2014, 210 阅读, 收藏,
摘要:
Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。这种特性意味着Objective-C不仅需要一个编译器,还需要一个运行时系统来执行编... 阅读全文
浅谈OC运行时(RunTime)
2015-12-04 15:31 by JG2014, 592 阅读, 收藏,
摘要:
常说OC是一门动态语言,这使得OC开发可以变得相当灵活,但是归根结底OC还是一种编译型的语言,其具有一定的动态性,但是其动态特性也比不上JavaScript这种解释型的语言。OC的动态性主要体现在这个文件中,下面我们打开这个文件,对其总结一下。一、基本结构及其继承关系要谈runtime首先必然要先了... 阅读全文
详解Objective-C的meta-class
2015-12-04 11:22 by JG2014, 448 阅读, 收藏,
摘要:
比较简单的一篇英文,重点是讲解meta-class。翻译下,加深理解。原文标题:What is a meta-class in Objective-C?原文地址:http://www.cocoawithlove.com/2010/01/what-is-meta-class-in-objective-... 阅读全文
C/C++语法知识:typedef struct 用法详解
2015-12-03 23:43 by JG2014, 508 阅读, 收藏,
摘要:
第一篇:typedef struct与struct的区别1. 基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确... 阅读全文
runtime详解2
2015-12-03 23:42 by JG2014, 240 阅读, 收藏,
摘要:
Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。这种特性意味着Objective-C不仅需要一个编译器,还需要一个运行时系统来执行编... 阅读全文
runtime详解
2015-12-03 23:39 by JG2014, 333 阅读, 收藏,
摘要:
runtime用在什么地方?说法在程序运行过程中,动态的创建一个类(比如KVO的底层实现)在程序运行过程中,动态地为某个类添加属性、方法,修改属性值\方法(method swizzing)遍历一个类的所有成员变量(属性)\方法例如:我们需要对一个类的属性进行归档的时候,属性特别多,我们就会写很多对应... 阅读全文
runtime
2015-12-03 23:39 by JG2014, 313 阅读, 收藏,
摘要:
runtime用在什么地方?说法在程序运行过程中,动态的创建一个类(比如KVO的底层实现)在程序运行过程中,动态地为某个类添加属性、方法,修改属性值\方法(method swizzing)遍历一个类的所有成员变量(属性)\方法例如:我们需要对一个类的属性进行归档的时候,属性特别多,我们就会写很多对应... 阅读全文
iOS开发核心语言Objective C —— 所有知识点总结
2015-12-03 17:35 by JG2014, 1144 阅读, 收藏,
摘要:
C和OC对比OC中主要开发在什么平台上的应用程序?答:可以使用OC开发Mac OS X平台和iOS平台的应用程序OC中新增关键字大部分是以什么开头?答:OC中新增关键字大部分是以@开头OC中新增加了那些数据类型?答:Block类型指针类型(Class, id类型)空类型特殊类型(SEL, nil)面... 阅读全文
ios面试题
2015-12-03 16:56 by JG2014, 299 阅读, 收藏,
摘要:
1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?答: Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类... 阅读全文
Objective-C中的Block
2015-12-01 13:52 by JG2014, 172 阅读, 收藏,
摘要:
1.相关概念在这篇笔记开始之前,我们需要对以下概念有所了解。1.1 操作系统中的栈和堆注:这里所说的堆和栈与数据结构中的堆和栈不是一回事。我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构:栈区(stack):由系统自动分配,一般存放函数参数值、局部变量的值等。由编译器自动创建与释放... 阅读全文
浙公网安备 33010602011771号