C/OC
xiaolinyeyi
菜鸟记录成长之路
展开
-
c语言下的dns解析
首先要了解表达主机的结构体hostent。其定义如下:123456789structhostent{char*h_name;char*h_aliases;shorth_addrtype;shorth_length;char**h_addr_list;原创 2014-11-18 17:10:15 · 2045 阅读 · 0 评论 -
OC对象的内存布局
一言以蔽之,属性(包括父类)都保存在对象本身的存储空间内;本类的实例方法保存在类对象中,本类的类方法保存在元类对象中;父类的实例方法保存在各级 super class 中,父类的类方法保存在各级 super meta class 中。下图是对象的内存布局,isa 指向其类对象,其余空间保存各级的 ivar:下图是类对象的内存布局(详细可看 runtime.h 中对 objc_class 的定义),i原创 2016-05-13 10:46:11 · 4456 阅读 · 0 评论 -
isKindOfClass与isMemberOfClass的源码
isKindOfClass : kind,表示一个种类,如:子类是父类的一种,是类的家族。其实现如下:- (BOOL)isKindOf:aClass{ Class cls; for (cls = isa; cls; cls = cls->superclass) //从自己的元类开始,顺着父类往上找 if (cls == (Class)aClass)原创 2016-04-16 17:53:25 · 568 阅读 · 0 评论 -
从几个例子理解串行并行队列及同步异步任务
例1- (void)viewDidLoad{ [super viewDidLoad]; NSLog(@"1"); dispatch_sync(dispatch_get_main_queue(),^{ NSLog(@"2"); }); NSLog(@"3");}此例死锁。viewDidLoad 和 block 的任务都要在主线程原创 2016-04-16 16:44:23 · 2170 阅读 · 0 评论 -
'release' is unavailable: not available in automatic reference counting mode
点开项目,在build settings中找到Objective-C Automatic Reference Counting选项,将其设置为no原创 2015-05-20 20:22:32 · 1016 阅读 · 0 评论 -
基本类型的归、解档
一、当只有一个基本类型对象时,只需调用[NSKeyedArchiver archiveRootObject:obj toFile:path];便可将obj对象(NSString、NSDictionary、NSArray、NSData、NSNumber等)归档到path指定的路径中;调用[NSKeyedUnarchiver unarchiveObjectWithFile:path];便可将对象解归档,原创 2015-05-28 17:05:01 · 660 阅读 · 0 评论 -
自定义归、解档
自定义的类若要实现归、解档,需要遵守NSCoding协议。实现该协议后,就可以像对基本类型那样对自己写的类进行归、解档。 NSCoding协议中有两个方法:- (void)encodeWithCoder:(NSCoder *)aCoder;//归档时的编码方法- (id)initWithCoder:(NSCoder *)aDecoder; //解归档时的解码方法以Person类为例,实现归解档。原创 2015-05-28 18:19:05 · 666 阅读 · 0 评论 -
通知notification
通知模式比观察者模式耦合度更低;观察者模式下被观察的对象是被动监听,而通知模式中被监听的对象是主动发出通知。接收通知的一方需要使用如下方法添加监听:[[NSNotificationCenter defaultCenter] addObserver:obj selector:@selector(action) name:@"notificationName"];这里Observer后跟接收通知者;se原创 2015-05-28 15:20:21 · 391 阅读 · 0 评论 -
OC数据类型
1、字符串 NSString是不可变的字符串常量,NSMutableString是可变的字符串。 初始化:NSString *str=@"hello";NSString *str2=[NSString stringWithString:str];NSString *str3=[[NSString alloc]initWithString:@"hello"];NSString *str4=[原创 2015-05-20 11:55:54 · 347 阅读 · 0 评论 -
main中的运行时(runtime)
原来 main 函数中就有 runtime 的典型示例int main(int argc, char *argv[]){ @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); }}UIApplication 不知道自原创 2016-05-17 17:02:12 · 485 阅读 · 0 评论