- 博客(44)
- 资源 (2)
- 收藏
- 关注
转载 Swift是否和OC一样有runtime机制
Swift是否和OC一样有runtime机制OC语言最大的特性无疑是其的动态性,可以利用OC的动态性能够获得一个类的方法和属性,从而实现灵活的程序,但Swift是否也包含了runtime机制呢?下面我们将从纯Swift的类和继承OC的Swift类来阐述Swift的runtime机制分析用例:方法,属性动态性最重要的一点就是拿到某个类的方法和属性,使用如下的方
2016-03-31 12:56:57
7991
原创 Swift之下标脚本
下标脚本(Subscripts)下标脚本 可以定义在类(Class)、结构体(structure)和枚举(enumeration)这些目标中,可以认为是访问集合(collection),列表(list)或序列(sequence的快捷方式,使用下标脚本的索引设置和获取值,不需要再调用实例的特定的赋值和访问方法。举例来说,用下标脚本访问一个数组(Array)实例中的元素可以这样写 someArra
2016-03-22 17:28:33
480
原创 Swift函数和闭包
1:函数使用func来声明一个函数,使用名字和参数来调用函数。使用->来指定函数返回值的类型,如下:func greet(name: String, day: String) -> String { return "Hello \(name), today is \(day)."}greet("Bob", "Tuesday")使用元组来让一个函数返回多个值。该元组的元素
2016-03-22 12:19:29
487
原创 Objective-C对象与Core Foundation对象
Core Foundation 对象主要使用在用C语言编写的Core Foundation 框架中,并引用计数的对象.与Objective-C对象区别很少.无论哪种框架生成的对象,一旦生成,便可在两种框架中使用.这种转换不需要额外的CPU资源,因而也被称为”免费桥”./****************************(1)***********************/
2016-03-22 09:43:23
454
原创 NSThread、NSOperation、GCD、NSOperationQueue
NSThread轻量级(每一个NSOperation对象对应一个线程)缺点:需要自己管理线程的生命周期,线程同步,同时线程同步对数据的加锁有一定的系统开销。NSOperation:面向对象的线程技术,不需要关心线程管理,数据同步的问题,可以吧精力放在数据的操作上!GCD:是局域C语言框架的1:使用NSThread便利构造器的方式创建:[NSThread detach
2015-11-12 10:00:07
626
原创 UIScrollView实现循环滚动和自动滚动
RootViewController.m@interface RootViewController ()UIScrollViewDelegate>@property (nonatomic,retain) UIPageControl *pageControl;@property (nonatomic,retain) UIScrollView
2015-08-05 15:49:07
4993
原创 SCNetworkReachability 使用
1.SCNetworkReachability介绍SystemConfiguration框架中和测试网络连接状态相关的函数定义在SCNetworkReachability.H文件中,主要的函数有以下几个:(1)创建测试连接的引用:(a)SCNetworkReachabilityRef SCNetworkReachabilityCreateWithAddress ( CFAllo
2015-08-05 08:20:21
1003
原创 使用NSAssert()和NSParameterAssert调试程序
NSAssert:NSAssert()只是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异常,并切可以自定义异常描述。NSAssert()是这样定义的:#define NSAssert(condition, desc)condition是条件表达式,值为YES或NO;
2015-08-05 07:52:38
922
原创 iOS 文件操作
将字符串,数组,字典中的数据写入文件中保存 Documents:苹果建议将程序创建产生的文件以及应用浏览产生的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录 Library:存储程序的默认设置或其它状态信息; Library/Caches:存放缓存文件,保存应用的持久化数
2015-07-31 13:58:30
625
原创 iOS设计模式之观察者模式
观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.何时使用观察者模式(1):对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变(2): 一个对象必须通知其他对象,而他又不需要知道其他对象是什么.(3): 有两种抽象类型相互依赖,将他们封装在各自的对象中,就可以对他们单独进行改变和
2015-07-30 21:08:22
635
原创 IOS中KVO模式的解析与应用
一、概述KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。KVO其实也是“观察者”设计模式的一种应用。我的看法是,这种模式有利于两个类间的解耦合,尤其是对于 业务逻辑与视图控制 这两个功能的解耦合。 二、引子
2015-07-30 08:23:56
630
原创 iOS 设计模式之中介者模式
中介者模式:用一个对象来封装一系列对象的交互方式,中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互.何时使用中介者模式:(1): 对象间的交互虽定义明确而非常复杂,导致一组对象彼此相互依赖而且难以理解.(2): 因为对象引用了许多其他对象并与其通讯,导致对象难以复用(3): 想要定制
2015-07-29 08:39:08
1125
1
原创 iOS设计模式之单例模式
单例模式:总是返回自己的同一个实例,它提供了对类的对象所提供的资源的全局访问点,并且返回的实例只能被实例化一次.单例设计模式设计需要考虑的两个问题:(1) :发起调用的对象不能以其他分配方式实例化单例对象,否则,就有可能创建单例类的多个实例(2) :对单例对象实例化的限制应该与引用计数内存模型共存.Singleton.h#import
2015-07-27 13:00:37
631
原创 iOS __weak学习碰到的疑问
__weak弱引用并不持有对象,所以赋值给__weak修饰符的变量也不会改变计数器的值. main.mid __strong obj3 =nil; id __weak obj1=nil;/*id __weak obj1 = obj; 编译器的模拟代码如下: id obj1; ob
2015-07-25 14:24:27
847
原创 Objective-C对象与Core Foundation对象
Core Foundation 对象主要使用在用C语言编写的Core Foundation 框架中,并引用计数的对象.与Objective-C对象区别很少.无论哪种框架生成的对象,一旦生成,便可在两种框架中使用.这种转换不需要额外的CPU资源,因而也被称为”免费桥”./****************************(1)***********************/
2015-07-24 08:40:19
835
原创 ARC机制之__weak,__autorelease详解
在ARC机制下接着上一篇博客,来介绍__weak引入的原因,以及__weak解决的问题,以及笔者学习__weak时的疑问.__weak:main.hid test0 = [[Testalloc] init]; NSLog(@"test0 = %p",test0); id test1 = [[Testalloc] init];
2015-07-24 08:34:25
1855
原创 ARC机制之__strong详解
ARC机制之__strong详解__strong 解析:默认情况下,一个指针都会使用 __strong 属性,表明这是一个强引用。这意味着,只要引用存在,对象就不能被销毁。这是一种所期望的行为:当所有(强)引用都去除时,对象才能被收集和释放。不过, 有时我们却希望禁用这种行为:一些集合类不应该增加其元素的引用,因为这会引起对象无法释放。
2015-07-23 08:35:16
1208
原创 深入解析alloc/retain/release/dealloc实现
首先通过GNUstep上得源代码来叙述各个函数的实现(GNUstep是Cocoa框架的互换框架,二者的行为和实现方式非常相似)GNUstep源代码中NSObject类的alloc方法:id = obj = [NSObject alloc];/**********************************/+(id) alloc{return [self
2015-07-22 09:08:11
1121
原创 iOS设计模式之生成器
iOS设计模式之生成器1.生成器模式的定义(1): 将一个复杂的对象的构件与它的表示分离,使得同样的构建过程可以创建不同的表示(2): 生成器模式除了客户之外还包含一个Director(指导者),和一个builder(生成器).客户端通过向指导者(Director)提出需求,指导者(Director)向bulider(生成器)提供信息来建造特定的产品.bulider根据特定的信息生
2015-07-21 13:55:04
1366
原创 IOS MVC模式初探
MVC设计模式在进行IOS程序开发的时候,若对MVC设计模式不了解的话,是很难做出良好性能的程序.现将作者本人对于MVC设计模式的一些粗浅看法记载余下,希望能对读者有所帮助.MVC设计模式在MVC设计模式中,对象被分为三组,分别扮演着模型,视图,控制器.而我们的任务则是确定对象或类应该属于这三组中的哪一组.(1)模型:在模型对象中封装数据
2015-07-21 10:26:45
781
原创 将汉字转化为拼音
/* Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse); 其中string参数是要转换的string,比如要转换的中文,同时它是mutable的,因此也直接作为最终转换后的字符串。range是要转换的范围
2015-07-20 19:37:40
639
原创 NSMutableArray中各种自定义排序方法
NSMutableArray中各种自定义排序方法/* (1)sortedArrayUsingComparator调用NScomparator方法 */FirstMethod.m-(void) test2{ //声明一个数组 NSArray *sortArray = [[NSArrayalloc] initWithObjects:
2015-07-20 08:16:28
3447
原创 NSArray利用Cocoa框架进行汉字排序
NSArray利用Cocoa框架进行汉字排序在NSString有一个函数localizedCompare:,它的功能是通过自身与给定字符串的比较,返回一个本地化的比较结果,也就是说这个函数是支持汉字比较的。进一步localizedCompare:只是字符串与字符串的比较,我们要让NSArray数组通过按关键字为汉字字符串排序,我们继续在NSArray的SDK上下功夫,我们发现除
2015-07-18 16:27:22
777
原创 NSArray进行汉字排序
因为NSArray并不直接支持对汉字的排序,这就要通过将汉字转换成拼音完成按A~Z的排序,这看起来是个头疼的问题,因为牵扯到汉字转为拼音,kmyhy给出一个较易实现的方法,获取汉字的首字的首字母,如将“王”变成“W”. 其中他通过pinyinFirstLetter函数获取中文拼音,函数原理是:“pinyinFirstLetter基于这么一个简单的原理:我们知道,在Objective
2015-07-18 14:34:19
11122
原创 NSArray打印汉字的方法
(1) NSArray打印汉字通过重载NSArray的- (NSString *)descriptionWithLocale:(id)locale方法方法体如下://根据设置的locale进行连接数组- (NSString *)descriptionWithLocale:(id)locale{ NSMutableString *str = [NSM
2015-07-18 14:31:51
868
原创 Object-C KVC模式使用详解(一)
Object-C KVC模式使用详解(一)1 除了一般的赋值和取值方法,我们还可以用key —-value——Coding(KVC)键值编码来访问你要存取的类的属性2:KVC常用的方法-(void)setValue:(id)value forKey:(NSString *)key;-(id) valueForKey:(NSSt
2015-07-17 21:00:45
1152
原创 IOS设计模式之工场模式
IOS设计模式之工场模式1 何为工厂模式:在基类中定义创建对象的一个接口,让子类决定实列化那个类.工厂方法让一个类的实列化延迟到子类进行.工厂方法解决的问题是对象的创建时机,它提供了一种扩展的策略,很好的符合了开放封闭原则.2 工厂模式的设计:将工厂和产品都抽象出一个基类,在基类中定义统一的接口,然后再具体的工厂同创建具体的产品.3 工厂
2015-07-17 07:48:14
795
原创 iOS设计模式之原型模式
1 何为原型模式:原型模式属于一种简单的设计模式,它通过拷贝的方式快速的创建一个对象,创建的过程分为两种 (1) 浅复制 (2) 深复制(1) 浅复制: 就是一种简单的指向同一个内存单元,共享数据(2) 深复制: 将原内存中的数据拷贝出来,放在一个新的内存单元2 何时使用原型模式:(1) 对象类型需要在运行时才能确定(2) 需要某对
2015-07-15 19:43:48
492
原创 IOS GCD的使用详解
IOS GCD的使用详解GCD介绍:GCD(Grand Central Dispatch)是从OS X Snow Leopard和iOS 4开始引入的新一代的多线程编程技术。开发者只需定义想执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并有计划的执行任务。并且由于线程管理是作为系统的一部分来实现的,因此系统可以统一管理,它会决定什么时候创建新线
2015-07-14 08:14:53
1293
原创 IOS block用法
IOS中Block用法介绍1 什么是blockBlock是iOS在4.0之后新增的程式语法,严格来说block的概念并不算是基础程式设计的范围.Block是C级别的语法和运行时特性。Block比较类似C函数,但是Block比之C函数,其灵活性体现在栈内存、堆内存的引用,我们甚至可以将一个Block作为参数传给其他的函数或者Block。引用网上例子:
2015-07-14 07:24:31
457
转载 IOS 多线程 RUNLOOP 机制 (二)
二,何时使用Run Loop对于辅助线程,在需要和线程有更多交互时,才使用Run Loop。比如:1)使用端口或者自定义输入源来和其他线程通讯2)使用线程定时器3)Cocoa中使用任何performSelector...的方法(参考Table:Performing selectors on other threads)4)使线程周期性工作三,如何使用Run Lo
2015-07-11 10:31:08
404
转载 IOS 多线程 RUNLOOP 机制 (一)
Run Loop Run Loop就是一个事件处理的循环,用来不停的调动工作以及处理输入事件。使用Run Loop的目的就是节省CPU效率,线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。一,Run Loop剖析Structure of a Run Loop and its sources上图显示了线程的输入源A,基于端口的输入源(Port Sources
2015-07-11 10:28:47
630
原创 实例分析用指针访问二维数组的几种方法
之前对数组的概念一直没有理解透彻,只觉得数组名就是个常量指针而已,用法和基本的指针差不多。所以当我尝试用二级指针去访问二维数组时,就经常会出错。下面就是刚开始写的一个错误的程序:#include int main(){ int iArray[2][3] = {{1,2,3},{4,5,6}}; int **pArray =
2015-07-10 11:06:45
5868
2
原创 C语言中结构体内存分配机制
C语言中结构体内存分配机制内存分配遵循的原理:(1) :分配的内存空间的大小必须是4的倍数(2):在结构体中每一个类型类型说明符(char,int,float,double,long)分配的内存空间的大小与类型说明符最大的字节保持一致(例如:结构体中字节最长的类型为long,则每一个类型分配的内存都和long保持一致).(3):若分配的内存空间比当前的类型的字节大,
2015-07-10 10:42:38
2866
2
转载 二维指针,二维数组,以及指向数组的指针的相关问题
很多公司都问到了二维指针,二维数组,以及指向数组的指针的相关问题,在此,简单的给大家总结下,为大家在面试的时候增加一定的信心。这类题目,总的来说,实际上可以归纳为如下几点:1、 有一个一维数组int a1[10],定义一个指针,指向一维数组名。2、 有一个一维数组int a2[10],定义一个指针,指向一维数组名的地址。3、 有一个二维数组int a3[3][4],定义一个指针,指
2015-07-10 08:53:53
502
原创 IOs内存管理中遇到的坑
NSString谜团当初在进行内存管理这方面,对NSString进行[NSString retain]可输出的retainCount结果总是-1,这使我很困扰,为什么retainCount不会增加呢?NSString *test2 = [[NSStringalloc] initWithFormat:@"one"];NSLog(@"test2 .......%ld",
2015-07-09 20:20:49
551
原创 IOS内存管理浅析
内存管理:1 简述:(1) java使用GC机制自动管理内存,Object-C支持手动管理内存,也支持GC机制,但GC机制对IOS设备无效,仅对Mac OSX电脑有效(2) Object-C使用alloc,new,copy的时候为对象分配内存,然后返回分配的内存的首地址存入指针变量,使用dealloc释放内存(3) Object-C中的对象都是使用指针引用的,也
2015-07-09 17:35:27
501
原创 数组指针和指针数组
指针数组与数组指针下面到底哪个是数组指针,哪个是指针数组呢:A)int *p1[10];B)int (*p2)[10];其实要整明白这个问题需要明白符号之间的优先级问题."[]"的优先级比"*"要高.(A)所以P1先与"[]"结合,构成一个数组,int* 修饰的是数组的内容,即每一个数组元素,在这里就是声明了10个指向int类型数据的指针
2015-07-09 17:16:19
381
原创 activity从service中获得数据
Actvity以bindService的方式启动service,通过返回的IBinder对象获得Service的实例,从而操作service的数据 下面直接用代码解释:BindServiceTestActivity.javaServiceTest.javamain.xml运行截图:
2015-05-12 12:24:38
823
原创 MyEclipse连接MySQL的方法
想必对于每一个刚接触Mysql的人来说,如何在MyEclipse中连接MySQL可能会让你感到茫然,而笔者我当初也曾走过不少的弯路,下面我将其记录下来希望后来人少走弯路。 首先我们打开MyEclipse在工具栏上依次点击Window-->Open Perspective-->MyEclipse Database Explorer 在左侧出现的空白处单击右
2015-05-06 19:25:58
2335
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人