- 博客(199)
- 资源 (5)
- 收藏
- 关注
原创 NSRunLoop
描述和目的处理的事件RunLoop机制Run Loop Modes描述和目的RunLoop是控制线程生命周期并接收事件进行处理的机制,是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统。 runloop管理线程,当有任务和事件响应时,会去执行,然后将这个事件送到能处理它的地方,没有的时候处于休息状态。 通过RunLoop机制实现省电,流畅,响应速度快,用户体验好。处理的事件sta
2015-12-17 17:25:32 1052
原创 Majority Number II
题目描述链接地址解法算法解释题目描述Given an array of integers, the majority number is the number that occurs more than 1/3 of the size of the array.ExampleGiven [1, 2, 1, 2, 1, 3, 3], return 1.Cha
2015-07-22 22:17:53 1025
原创 Majority Number
题目描述链接地址解法算法解释题目描述Given an array of integers, the majority number is the number that occurs more than half of the size of the array. Find it..ExampleGiven [1, 1, 1, 1, 2, 2, 2], return 1ChallengeO(n
2015-07-21 00:08:05 1293
原创 Single Number III
题目描述链接地址解法算法解释题目描述Given 2*n + 2 numbers, every numbers occurs twice except two, find them.ExampleGiven [1,2,2,3,4,4,5,3] return 1 and 5ChallengeO(n) time, O(1) extra space. .链接地址http://www.lintcode
2015-07-20 22:41:35 2989 1
原创 Single Number II
题目描述链接地址解法算法解释题目描述Given 3*n + 1 numbers, every numbers occurs triple times except one, find it.ExampleGiven [1,1,2,3,3,3,2,2,4,1] return 4ChallengeOne-pass, constant extra space.链接地址http://www.lintc
2015-07-19 22:42:15 908
原创 Single Number
题目描述链接地址解法算法解释题目描述Given 2*n + 1 numbers, every numbers occurs twice except one, find it. ExampleGiven [1,2,2,1,3,4,3], return 4链接地址http://www.lintcode.com/en/problem/single-number/解法 int singleNu
2015-07-19 18:35:17 805
原创 Remove Duplicates from Sorted List II
题目描述链接地址解法题目描述Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. ExampleGiven 1->2->3->3->4->4->5, return 1->2->5. Given
2015-07-08 22:31:16 927
原创 Remove Duplicates from Sorted List
题目描述链接地址解法题目描述Given a sorted linked list, delete all duplicates such that each element appear only once.Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3.链接地址http://www.lintcode.com/en
2015-07-07 23:57:52 639
原创 Partition List
题目描述链接地址解法题目描述Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.You should preserve the original relative order of the nodes
2015-07-07 00:22:07 1086
原创 Nth to Last Node in List
题目描述链接地址解法题目描述Find the nth to last element of a singly linked list. The minimum number of nodes in list is n. ExampleGiven a List 3->2->1->5->null and n = 2, return node whose value is 1.链接地址http
2015-07-06 21:13:17 931 2
原创 Reverse Linked List
题目描述链接地址解法1解法2题目描述ExampleFor linked list 1->2->3, the reversed linked list is 3->2->1链接地址http://www.lintcode.com/en/problem/reverse-linked-list/解法1 ListNode *reverse(ListNode *head) { // wri
2015-07-05 23:48:24 970
原创 stack和queue常用方法
stack常用方法empty() 是否为空 size() 元素个数 pop() 删除栈顶元素 top() 返回栈顶元素的值 push() 增加元素stack<string> st; st.push("hello"); st.push("richard"); st.push("yang"); cout<<"the stack size is "<<st.size()<<
2015-07-04 23:41:26 1564
原创 标准库string常用方法
string常用方法定义及初始化string常用方法定义及初始化 string s1; string s2="hello"; cout
2015-07-02 00:01:19 706
原创 Balanced Binary Tree
descriptionGiven a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node nev
2015-06-25 22:08:28 791
原创 vector容器常用方法
容器简介定义及初始化末尾插入元素遍历 size 函数是可以动态增加的通过下标操作增加改变vector内容不是安全的操作仅能对已存在元素进行下标操作不存在会crash将元素一个容器复制给另外一个容器类型必须匹配容器类型和元素类型必须相同迭代器简介定义begin和end操作迭代器的自增和解引用操作迭代器的算术操作const_iterator 只读容器简介定义及初始化vector<
2015-06-24 01:35:11 1835
原创 iOS常用设计模式——命令设计模式
命令设计模式详解命令设计模式详解基本概念NSInvocation的使用命令模式的体现基本概念命令设计模式将一个请求或行动作封装为对象。这个封装请求比原始的请求要灵活并且可以在对象之前被传递,存储,动态修改或者放进队列里面。苹果公司实现这种模式使用Target-Action机制和Invocation。NSInvocation的使用在 iOS中可以直接调用 某个对象的消息 方式有2种一种是perf
2015-05-23 18:22:33 1074
原创 lua实现面向对象
lua实现面向对象lua实现面向对象实现类的定义实现类的继承实现类的定义function people( name) local self = {} local function init( ... ) self.name=name end self.sayHi=function ( ... ) print("hello"..sel
2015-05-12 17:25:05 853
原创 iOS常用设计模式——简单工厂设计模式
简单工厂设计模式详解简单工厂设计模式详解基本概念结构图经典的示例示例代码优点缺点使用条件基本概念“专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。” 世界上就是由一个工厂类,根据传入的参数,动态地决定创建出哪一个产品类的实例。结构图ConcreteProduct1和ConcreteProduct2两个产品具有一个共同的父类IProject,简单工厂类为Simpl
2015-04-02 16:58:20 1080
原创 iOS常用设计模式——观察者设计模式
观察者设计模式详解观察者设计模式详解基本概念NSNotificationCenter的使用添加监听接收消息删除监视KVO的使用基本概念注册观察者观察者对象发生变化时的回调方法remove观察者身份代码实现基本概念观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己.而在IOS开发
2015-03-31 16:43:48 930
原创 iOS常用设计模式——单例设计模式
单例设计模式详解单例设计模式详解基本概念在IOS中使用单例模式的情况非ARC环境创建单例模式的基本步骤非ARC环境具体代码实现ARC环境创建单例模式的基本步骤基本概念单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问在IOS中使用单例模式的情况1.如果说创建一个对象会耗费很多系统资源,那么此时
2015-03-30 17:47:16 879
原创 二维数组中的查找[题目2]
题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为两个整数m和n(1输入的第二行包括一个整数t(1接下来的m行,每行有n个数,代表题目所给出的m行n列的矩阵(矩阵如题目描述所示,每一
2015-02-21 00:04:15 1589
原创 CoreGraphics详解
CoreGraphics详解CoreGraphics详解CoreGraphics绘图绘制一个矩形绘制一个椭圆绘制曲线绘制圆形链接点来绘制为图形CoreGraphics绘图绘制一个矩形CGRect rectangle=CGRectMake(0, 0, 200, 200); //获取当前图形 CGContextRef ctx=UIGraphicsGetCurrentCon
2015-02-12 16:12:49 1689
原创 CALayer 详解
CALayer 详解CALayer 详解综述UIView 和CALayer的区别属性其他重要属性综述UIView的继承结构为:UIResponder:NSObject。可以看出UIView的直接父类为UIResponder类,.CALayer的继承结构:NSObject,直接从NSObject继承,因为缺少了UIResponder类,由上可见UIResponder是用来响应事件的,也就是说U
2015-02-11 17:21:45 1324
原创 Block存储域
__block说明符严格意义上来说是一种存储域说明符,用来指定该变量的存储位置在C语言中,static表示存在静态变量区域,auto表示存储在栈中,register表示存在寄存器__block变量是结构体类型的自动变量Block是objective-c对象,_NSConcreteStackBlock表示存储为栈,_NSConcreteGlobalBlock表示全局变量区
2015-02-07 16:55:12 1032
原创 Two Sum
link:https://oj.leetcode.com/problems/two-sum/描述:Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of
2015-02-02 20:52:56 856
原创 dispatch_semaphore使用方法
第一、引入dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); NSMutableArray *arr=[NSMutableArray new]; for (int i=0; i dispatch_async(queue, ^{[arr a
2015-02-02 14:14:36 1127
原创 dispatch_apply&dispatch_suspend&dispatch_resume使用
第一、dispatch_apply 是同步函数,会阻塞当前线程直到所有循环迭代执行完成。当提交到并发queue时,循环迭代的执行顺序是不确定的示例: dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_apply(10,
2015-01-31 17:51:15 3144
原创 dispatch_barrier_async的使用
dispatch_barrier_async是在前面的任务执行结束后它才执行,而且它后面的任务等它执行完成之后才会执行.在如下场景:在访问数据操作时,可以并行读取,因此这种操作应该放到concurrent Dispatch Queue中,写入操作是在任何读取操作执行之前,放到serial Dispatch Queue,在写入处理结束之前,读取处理操作不可进行。此时使用dispatc
2015-01-31 12:28:15 2096
原创 dispatch group使用方法详解
第一、dispatch group可以用来将多个block组成一组以监测这些Block全部完成或者等待全部完成时发出的消息。使用函数dispatch_group_create来创建,然后使用函数dispatch_group_async来将block提交至一个dispatch queue,同时将它们添加至一个组。使用dispatch_group_notify增加监听,当group内的bloc
2015-01-31 11:32:21 3490
原创 iOS常见crash问题及crash日志分析
第一、插入空元素对于NSMutableArray、NSMutableDictionary、NSMutableSet等可变的对象,插入空元素时crash正确做法是加判断,sample code如下所示: NSDictionary *dic; NSMutableArray *arr=[NSMutableArray new]; if (dic) { [a
2015-01-11 23:41:32 1859
原创 objective-C 的消息调用机制
objective-C 的消息及消息转发机制第一、基本概念1、objc_class中method数据结构typedef struct objc_method *Method;typedef struct objc_ method { SEL method_name; char *method_types; IMP method_imp;};2、
2015-01-07 17:48:51 1138
原创 objective C 对象模型
第一、在OC中关于对象模型,有五个基本概念,Object(实例),Class(类),Metaclass(元类),Rootclass(根类),Rootclass‘s metaclass(根元类)第二、每一个object都有一个隐藏的isa指针,指向class,对象结构如下所示:typedef struct objc_class *Class;typedef struct objc_obj
2015-01-06 15:08:53 1263
原创 dispatch_after使用方法详解
dispatch_after能让我们添加进队列的任务延时执行,该函数并不是在指定时间后执行处理,而只是在指定时间追加处理到dispatch_queue 该方法的第一个参数是time,第二个参数是dispatch_queue,第三个参数是要执行的block。 dispatch_time_t有两种形式的构造方式,第一种相对时间:DISPATCH_TIME_NOW表示现在,NSEC_
2014-12-26 20:44:01 20232
原创 iOS中block的使用详解
第一、block的使用1、截获自动变量的值typedef void(^TEST)(void);int main(int argc, const char * argv[]) { @autoreleasepool { TEST test; NSString *sample=@"hello"; test=^{
2014-12-26 14:50:15 952
原创 KVC方法详解与实现原理
KVC提供了一种在运行时而非编译时动态访问对象属性与成员变量的方式,该方法不需要调用get和set方法和变量实例就可以访问对象,KVC默认的实现方法有NSOject提供,这种方法及支持对象也支持简单数据类型。第一、在OC中访问变量的几种方式:1、设置为public型,通过->直接访问:代码为:@interface Book : NSObject{ @public
2014-12-23 17:54:07 2698
原创 objective C中继承、协议、分类和多态的实现
第一、objective C中继承的实现在oc中只有实例变量会有权限控制,实例方法和类方法是没有权限控制的,这点与c++不同,OC默认的是protected,并且在声明权限控制时,没有分号在OC中可以像C++一样用指针运算法来访问实例变量Rectangle.h 文件代码:#import @interface Rectangle : NSObject{ in
2014-12-23 15:36:22 2005
原创 Foundation框架常用数据类型和NSAutoreleasePool自动释放池解析
第一、NSAutoreleasePool自动释放池解析1、自动释放池的物理实现自动释放池用栈来实现,当你创建一个新的自动释放池是,会压栈到栈顶,接受autorelease消息的对象也会被压入到栈顶NSAutoreleasePool实现延时释放,内部包含一个数组(NSMutableArray),用来保存声名为autorelease的所有对象。如果一个对象声明为autore
2014-12-23 12:03:35 1172
原创 __bridge_retained/__bridge_transfer/__bridge使用详解
第一、__bridge_retained的使用__bridge_retained转换可使要转换的变量也持有所赋值的对象 void *p=0; { id obj=[[NSObject alloc] init]; p=(__bridge_retained void*)obj; } NSLog(@"clas
2014-12-04 20:06:41 2105
原创 ARC使用规则
第一、不能使用retain/release/retainCount/autorelease使用ARC,内存管理由编译器来负责,无需写上面关键词第二、在ARC环境下,使用alloc/new/copy/mutableCopy来生成/持有对象copy/mutableCopy的使用需要copyWithZone的支持,如果没有,则不支持copy/mutableCopy第三、不能显示调用[su
2014-12-04 16:18:07 1206
原创 __weak修饰符详解
第一、weak弱引用不能持有对象实例。在持有某对象的弱引用时,若该对象被废弃,则此弱引用自动失效并处于nil被赋值的状态。第二、实例 id __weak obj1=nil; { /* * 生成并持有对象A */ id __strong obj0=[[Test alloc] ini
2014-12-04 15:01:11 3679
清华大学硕士论文写作指南
2011-12-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人