上一页 1 ··· 62 63 64 65 66 67 68 69 70 ··· 167 下一页
摘要: // // main.m #import #import "Person.h" int main(int argc, const char * argv[]) { Person *p = [Person new]; Dog *d = [Dog new]; p.dog = d; [p release]; [d release];... 阅读全文
posted @ 2017-08-25 15:29 无天666 阅读(149) 评论(0) 推荐(0)
摘要: // Person.h #import @class Car; //#import "Car.h" // 由于import是一个预编译指令, 他会将""中的文件拷贝到import所在的位置。 // 并且import有一个特点, 只要""中的文件发生了变化, 那么import就会重新拷贝一次(更新操作)。 // @class仅仅是告诉编译器, @class后面的名称是一个类, 不会做任何拷... 阅读全文
posted @ 2017-08-25 15:15 无天666 阅读(251) 评论(0) 推荐(0)
摘要: // // main.m // 多个对象内存管理练习 // // ARC是Xcode帮我们生成内存释放的代码,MRC是需要我买自己写retain和release。想研究内存管理只能在MRC,管理对象就是在管理引用计数器,计数器为0对象就释放。 // 给空指针发消息不会报错,给野指针发消息就会报错。 // 对象与对象之间有关系时候就用retain。 #import #import "... 阅读全文
posted @ 2017-08-25 14:55 无天666 阅读(256) 评论(0) 推荐(0)
摘要: // // Person.h #import #import "Room.h" #import "Car.h" #import "Dog.h" @interface Person : NSObject { Room *_room; Car *_car; Dog *_dog; } /* - (void)setRoom:(Room *)room; - (void)se... 阅读全文
posted @ 2017-08-25 14:18 无天666 阅读(208) 评论(0) 推荐(0)
摘要: // // main.m // Set方法的内存管理 #import #import "Person.h" #import "Room.h" int main(int argc, const char * argv[]) { @autoreleasepool { // 1.创建两个对象 Person *p = [[Person allo... 阅读全文
posted @ 2017-08-25 11:15 无天666 阅读(198) 评论(0) 推荐(0)
摘要: // Room.h #import @interface Room : NSObject @property int no;// 房间号 @end // Room.m #import "Room.h" @implementation Room - (void)dealloc { NSLog(@"%s no = %i", __func__... 阅读全文
posted @ 2017-08-23 17:45 无天666 阅读(221) 评论(0) 推荐(0)
摘要: // // main.m // 野指针和空指针 #import #import "Person.h" int main(int argc, const char * argv[]) { @autoreleasepool { Person *p = [[Person alloc] init]; // 1 // 只要一个对象被释放... 阅读全文
posted @ 2017-08-23 17:20 无天666 阅读(279) 评论(0) 推荐(0)
摘要: /* main.m 堆里面的内存释放是根据引用计数器,所以就是操作引用计数器。 创建一个对象,对象里面就有一个引用计数器,有多少指针指向它。 引用计数器为0就释放。任何一个对象初始化时就是1,所以 { Person *p = [[Person alloc] init] } 出了这行代码p销毁了,但是Person对象里面的计数器初... 阅读全文
posted @ 2017-08-23 16:57 无天666 阅读(281) 评论(0) 推荐(0)
摘要: // // main.m // 代理的时候用。 /* SEL类型: 代表方法的签名,在类中的方法列表中存储着该签名与该方法对应的关系,类的方法列表存储在类对象中, 每个方法都有一个与之对应的sel类型的对象,根据sel类型的对象就可以找到方法的地址而进行调用。 [p test]会先把test包装成sel类型的数据,根据sel类型的数据去类对象中的方法列表中去一个一个... 阅读全文
posted @ 2017-08-23 16:08 无天666 阅读(212) 评论(0) 推荐(0)
摘要: // // main.m // 类的启动过程 #import #import "Person.h" #import "GoodStudent.h" /* 只要程序启动就会将所有类的代码加载到内存中, 放到代码区 load方法会在当前类被加载到内存的时候调用, 有且仅会调用一次 如果存在继承关系, 会先调用父类的load方法, 再调用子类的load方法*/ int main(int... 阅读全文
posted @ 2017-08-23 15:16 无天666 阅读(244) 评论(0) 推荐(0)
上一页 1 ··· 62 63 64 65 66 67 68 69 70 ··· 167 下一页