摘要:
objective-c中,有类别可以在不修改源码的基础上增加方法;近排在看别人的开源代码时,发现还可以动态增加属性。而且是在运行时,太牛B了。使用运行时库,必须要先引入 objc/runtime.h可以使用的函数如下:OBJC_EXPORTvoidobjc_setAssociatedObject(idobject,constvoid*key,idvalue,objc_AssociationPolicypolicy)这个函数OBJC_EXPORTidobjc_getAssociatedObject(idobject,constvoid*key)__OSX_AVAILABLE_STARTING(_ 阅读全文
摘要:
【罗国强原创】今天被刺激了,愤概地要写下这边博文。说到http异步下载,首先要知道其中的关键类。关键类是NSURLConnection NSURLRequest NSMutableURLRequest 委托是 NSURLConnectionDownloadDelegate NSURLConnectionDataDelegate NSURLConnectionDelegate首先,我们要实现最基本的下载功能。LQAsynDownload.h//// LQAsynDownload.h// lgTest//// Created by yons on 14-2-14.// Copyright... 阅读全文
摘要:
说到图片获取的方法,就得看API文档。UIImage生成实例的方法有:1)imageNamed从指定文件返回对象。这个方法有个比较特殊的地方:该方法首先从系统缓存中寻找该图片,如果有,则从缓存中获取;如果没有,则获取图片,再把图片加入缓存;2)imageWithContentFile从指定文件路径中加载对象并返回。但是该方法不会缓存对象。3)imageWithData根据NSData返回对象实例 阅读全文
摘要:
在ios中,委托模式非常常见,那委托模式是什么?委托模式是把一个对象把请求给另一个对象处理。下面见例子:#import @protocol LQIPeople@required-(void) eat;-(void) run;-(void) walk;@optional-(void) speak;@end@interface LQPerson : NSObject@property (assign) id peopleDelegate;-(void) liveADay;@end#import "LQPerson.h"@implementation LQPerson@synth 阅读全文
摘要:
what is blockBlocks are a language-level feature added to C, Objective-C and C++, which allow you to create distinct segments of code that can be passed around to methods or functions as if they were values. Blocks are Objective-C objects, which means they can be added to collections like NSArray or 阅读全文
摘要:
面向对象的基本概念是 封装、继承、多态与抽象。但面向对象设计呢?开放关闭原则 :模块对扩展开放,对修改关闭。里氏置换原则 :如果调用的是父类的话,那么换成子类也可以完成。依赖倒转原则 :要针对接口编程,而不是实现编程。接口隔离原则 :每个接口应该代表一种角色。合成/复用原则 :少继承,多合成。最小知识原则 :不要和陌生人说话。创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责 阅读全文
摘要:
KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。 addObserver: forKeyPath: options: context: 方法注册观察者。-(void)observeValueForKeyPath:(NSString*)keyPathofObject:(id)objectchange:(NSDictionary*)changecontext:(void*)context;回调方法。removeObserver: forKeyPath:; 撤销观察者。KVC是KeyValueCoding的简称,它是一种可以直接通 阅读全文
摘要:
【原创】http://www.cnblogs.com/luoguoqiang1985/冒泡排序:通过N-1次对剩余未排序元素中最大(小)元素的上浮来实现排序,上浮过程通过交换相邻元素实现。选择排序:通过N-1次将剩余未排序元素中最大(小)元素放置到数组尾部来实现排序。插入排序:插入排序使用的是增量(incremental)方法;在排好子数组A[1..j-1]后,将A[j]插入,形成排好序的子数组A[1..j];OC例子:NSMutableArray+SortTools.h//比较算法的块定义//若需要置换返回YES,否则返回NOtypedef BOOL (^compareElement)(NS 阅读全文
摘要:
数据结构部分1.数组和链表的区别。(很简单,但是很常考,记得要回答全面)C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使 用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使 用,从而造成内存空间的浪费。链表是一种常见的数据组织形式,它采用动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用delete将 已分配的空间释放,不会造成内存空间的浪费。 从逻辑结构来看:数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况,即数组的大小一旦定. 阅读全文
摘要:
【原创】 http://www.cnblogs.com/luoguoqiang1985软件构件基本属性构件是可以独立配置的单元。因此构件必须自包容。构件必须严格封装。它必须与外部环境和软件分离。构件在适当的环境可以被复合使用,因此必须提供清晰的API接口规范,以便与外界交互。在任何环境中,最多仅有一份构件的副本。软件构件按不同的侧面开发过程:分析件,设计件,程序件和数据件。功能: 【基础层】 数据构件和系统支撑构件 【中间层】 各种通用的中间件 【顶层】 各种领域构件和子系统构件 3. 构件的结构 原子构件以及由各种构件组合而成组合构件。构件其实就是一个标准的可复用的零部件。A系统可以用,.. 阅读全文