摘要:1.结构体 objc_class 1 struct objc_class { 2 Class isa OBJC_ISA_AVAILABILITY; 3 4 #if !__OBJC2__ 5 Class super_class ...
阅读全文
摘要:weak指针主要用于“父-子”关系,父亲拥有一个儿子的strong指针,因此是儿子的所有者;但是为了阻止所有权回环,儿子需要使用weak指针指向父亲;你的viewcontroller通过strong指针拥有一个UITableview,tableview的datasource和delegate都是we...
阅读全文
摘要:ViewController的生命周期中各方法执行流程如下:init—>loadView—>viewDidLoad—>viewWillApper—>viewDidApper—>viewWillDisapper—>viewDidDisapper—>viewWillUnload->viewDidUnlo...
阅读全文
摘要:UINavigationController是以Stack的形式来存储和管理ViewController,UITabBarController是以Array的形式来管理ViewController
阅读全文
摘要:UITableView和UIButton的继承关系:UITableView--》UIScrollView--》UIView--》UIResponder--》NSObjectUIButton--》UIControl--》UIView--》UIResponder--》NSObject
阅读全文
摘要:GCD和NSOperationQueue1》GCD是纯C语言的API,NSOperationQueue是基于GCD的OC版本的封装。2》GCD只支持FIFO的队列,NSOperationQueue可以很方便的调整执行顺序,可以添加依赖和设置最大并发数量。3》GCD的执行速度比NSOperationQ...
阅读全文
摘要:GCD的内部实现1》iOS和OSX的核心是XNU内核,GCD是基于XNU内核实现的。2》GCD的API全部在libdispatch库中。3》GCD的底层实现主要有:Dispatch Queue和Dispatch Source *Dispatch Queue:管理block操作。 *Dispatc...
阅读全文
摘要:1,网络图片处理问题中怎么解决一个相同的网络地址重复请求的问题 利用字典图片地址为Key,下载操作为value2,举例cocoa中常见对几种多线程的实现,并谈谈多线程安全的几种解决办法及多线程安全怎么控制?1》开发中实现多线程的方案 *C语言的POSIX接口:#include *OC的NSTh...
阅读全文
摘要:多线程的底层实现1》1个进程要想执行任务,必须得有线程,线程是进程的基本执行单位,一个进程(程序)的所有任务都在线程中执行。2》1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务。 *多线程的作用:更新显示UI界面、处理用户触摸事件。3》Mach是第一个以多线程方式处理任务的系统,...
阅读全文
摘要:Objective-C的属性和实例变量:@interface HMPerson :NSObject{ // 在OC中定义一个实例变量 copy NSString *_name;}//在OC中定义一个属性如下@property (nonatomic, copy) NSString *name;@e...
阅读全文
摘要:KVO的内部实现原理1》KVO是基于runtime机制的。2》当某个类的对象第一次被开始监听时,系统就会在运行期间动态为其创建以NSNotifying_类名 为名的子类,在这个子类中重写父类中任何被观察属性的setter方法,子类在被重写的setter方法中实现真正的通知机制。 1 // 刚创建pe...
阅读全文
摘要:ASI和AFN以及底层框架的关系对比ASIAFN更新状态2012年10月份,已经停止更新持续更新中,目前已更新至2.0版介绍ASI的直接操作对象ASIHTTPRequest,是一个实现了了NSCopying协议的NSOperation子类。在initialize和initWithURL:方法中初始化...
阅读全文
摘要:HTTP协议通信过程1》请求*客户端--》服务器*请求的内容a,请求行(请求方法、http协议版本、请求资源路径)b,请求头(客户端环境的描述,客户端请求地址主机的信息等)c,请求体(post请求才需要,请求的具体数据)2》响应*服务器--》客户端*响应的内容a,状态行(http版本号、状态码、英文...
阅读全文
摘要:Key-Value Coding(KVC)KVC,即是NSKeyValueCoding,一个非正式的Protocol,提供一中机制来间接访问对象的属性。KVO就是基于KVC实现的关键技术之一。Key-Value Observing(KVO)KVO,即是NSKeyValueObserving,建立在K...
阅读全文
摘要:原文地址:http://www.zhengjie.info/2011/12/20/20911. 下载Tomcat(地址:tomcat.apache.org),选择适合的版本(这里选择6.0.35),点击“Download”,之后在新页面点击“Core下的”“tar.gz”(6.2Mb)2. 解压To...
阅读全文
摘要:发送HTTP请求的方案 iOS中,常见的发送HTTP请求(get和post)的解决方案有 1)iOS自带(原生) NSURLConnection:用法简单,最古老最经典最直接的一种方案 NSURLSession:iOS 7新出的技术,功能比NSURLConnection更加强大 CF...
阅读全文
摘要:get和post请求1,get:在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如http://ww.test.com/login?username=123&pwd=234&type=JSON*注意:由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限的,通...
阅读全文
摘要:HTTP:超文本协议http协议的请求包括以下3点:1,请求行*包括请求方法、请求资源路径、HTTP协议版本2,请求头*包括对客户端环境的描述、客户端请求的主机地址等信息3,请求体*客户端发给服务器的具体数据,如文件等http协议的响应包括以下3点:1,状态行*包括HTTP协议版本号、状态码、英文名...
阅读全文
摘要:cell 的图片下载1,面试题1》如何防止一个url对应的图片重复下载?*cell下载图片-有沙盒缓存2》SDWebImage的默认缓存时长是多少?*一个星期3》SDWebImage底层是怎样实现的?*cell下载图片-有沙盒缓存2,SDWebImage1》常用方法- (void)sd_setIma...
阅读全文
摘要:SDWebImage默认沙盒缓存时长是一个星期,单位是秒(second); 1 // 当app接收到内存警告 2 - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 3 { 4 SDWebImageM...
阅读全文
摘要:自定义Operation.h 1 #import 2 @class HMDownloadOperation; 3 4 @protocol HMDownloadOperationDelegate 5 6 @optional 7 - (void)downloadOperation:(HMDown...
阅读全文
摘要:有沙盒缓存 1 #import "HMAppViewController.h" 2 #import "HMApp.h" 3 4 #define HMAppImageFile(url) [[NSSearchPathForDirectoriesInDomains(NSCachesDirecto...
阅读全文
摘要:无沙盒缓存 1 #import "HMAppViewController.h" 2 #import "HMApp.h" 3 4 @interface HMAppViewController () 5 /** 6 * 模型数组 7 */ 8 @property (nonatom...
阅读全文
摘要:在非ARC中设计单例模式// 在非ARC中,需要重写下面三个方法,这样比较安全- (oneway void)release{ }- (id)retain{ return self;}- (NSUInteger)retainCount{ return 1;}
阅读全文
摘要:.h文件#import @interface HMDataTool : NSObject+ (instancetype)sharedDataTool;@end.m文件#import "HMDataTool.h"@implementation HMDataTool// 用来保存唯一单例对象static...
阅读全文
摘要:.h文件#import @interface HMMusicTool : NSObject @property (nonatomic, strong) NSMutableArray *musics;+ (instancetype)shareTool;@end.m文件#import "HMMusicT...
阅读全文
摘要:1,load// 当类加载到OC运行时环境中(内存),就会调用一次(一个类只会加载一次)+ (void)load{ // 一装入内存就实例化, _instance = [[self alloc] init]; // NSLog(@"load---");}2,initializ...
阅读全文
摘要:static:修饰变量1》修饰局部变量:*局部变量的生命周期 根 全局变量 类似*但是不能改变作用域*能够保证局部变量永远只初始化一次,在程序运行过程中,永远只有1分内存2》修饰全局变量*全局变量的作用域仅限于当前文件内部
阅读全文
摘要:延迟1》perform3秒后自动回到当前线程调用self的download:方法,并且传递参数:@"http://555.jpg"// 一旦定制好延迟任务后,不会卡主当前线程, [self performSelector:@selector(download:) withObject:@"http...
阅读全文
摘要:GCD-一次性代码static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSLog(@"---download image---"); });使用dispatch_once函数能保证某段代码在程序运行过程中只被执行1次
阅读全文
摘要:1,队列和任务1)任务:需要执行什么操作*用block来封装任务2)队列:存放任务*全局的并发队列:可以让任务并发执行dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);*自己创...
阅读全文
摘要:控制器默认会自动找对应的xib来创建view1,去掉Controller这个单词后的同名xib:HMHomeView.xib2,完全同名的xib:HMHomeViewController.xib
阅读全文
摘要:同步,异步,并发,串行1,同步和异步主要影响:能不能开启新的线程*同步(dispatch_sync):在当前线程中执行任务,不具备开启新线程的能力;*异步(disaptch_async):在新线程中执行任务,具备开启新线程的能力;2,并发和串行主要影响:任务的执行方式*并发:多个任务并发(同时)执行...
阅读全文
摘要:默认得cell央视通常不能满足正常的开发需求。解决方法-自定义cell1,XIB2,纯代码3,StoryBoardXIB的定义步骤:1,新建 名字.xib2,拖拽一个需要自定义的控件,摆放其它子控件3,新建一个类*类名要与XIB的名字保持一致*继续自的子类要与XIB中的根节点的类型一致4,要连线之前...
阅读全文
摘要:// 单行插入刷新,效率高 NSIndexPath *path = [NSIndexPath indexPathForRow:(self.tgs.count - 1) inSection:0]; [self.tableView insertRowsAtIndexPaths:@[path]...
阅读全文
摘要:控制器---->控件(strong)强引用控件.delegate---->控制器(strong)强引用控件中的delegate(nonatomic,weak)弱引用只有将控件中的delegate设置为weak才合理,不然会造成循环引用,导致控制器和子视图都无法被释放,造成内存泄露。
阅读全文
摘要:UITableViewCell1)当所有的cell的高度都一样的时候 使用:tableView.rowHeight,这样效率高。2)当cell的高度不一样时 使用:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexP...
阅读全文
摘要:代理阶段性小结@required ->必须实现的方法@optional ->可选的实现方法-不强求实现-如果实现了能得到特殊的效果,如果不实现,也不影响程序的正确运行 能够增加控件的灵活度1,遵守协议,预先定义好方法,不实践,具体的实现工作由代理负责 定义的与数据有关的方法 定义的与...
阅读全文
摘要:代理模式:是父控件(视图控制器)监听子控件的事件,当子控件发生某些事情时,通知父控件工作。1,监听控件的某些事件2,使用代理模式,是为了在程序直接“解耦”(关联不要那么紧密)
阅读全文