03 2016 档案
摘要:1、ARC模式下如何兼容非ARC的类 2、将MRC转换为ARC
阅读全文
摘要:1)ARC中,只要弱指针指向的对象不在了,就直接把弱指针做清空(赋值为nil)操作。 2)__weak Person *p=[[Personalloc]init];//不合理 对象一创建出来就被释放掉,对象释放掉后,ARC把指针设置为nil。 3)ARC中在property处不再使用retain,而
阅读全文
摘要:问题1:人拥有狗作为成员变量,此时使用weak,释放过程是什么样?
阅读全文
摘要:注意:当使用ARC的时候,暂时忘记“引用计数器”,因为判断标准变了。 2、强弱指针 强指针: 弱指针:
阅读全文
摘要:只需要写一行代码,编译器会在合适的位置释放学生对象,程序员无需考虑释放问题。
阅读全文
摘要:1、什么是ARC? Automatic Reference Counting,自动引用计数,即ARC,可以说是WWDC2011和iOS5所引入的最大的变革和最激动人心的变化。ARC是新的LLVM 3.0编译器的一项特性,使用ARC,可以说一举解决了广大iOS开发者所憎恨的手动内存管理的麻烦。 在工程中使用ARC非常简单:只需要像往常那样编写代码,只不过永远不写retain,release和a...
阅读全文
摘要:1、autorelease的应用场景 经常用来在类方法中快速创建1个对象。 // 声明实现一个类方法 + (Student *)student { // 在里面直接进行autorelease return [[[Student alloc] init] autorelease]; } 应用: // 在自动释放池中使用类方法创建对象 @autoreleasepool{ // 此时创建出来...
阅读全文
摘要:1、autorelease使用注意 1)并不是放到自动释放池中,都会自动加入到自动释放池 1.1) 因为没有调用autorelease方法,所以对象没有加入到自动释放池. int main(){ @autoreleasepool{ Student *s = [[Student alloc] init]; [s release]; // 正常释放 } return 0; } 1...
阅读全文
摘要:2个对象互相有着引用,A中有B,B中有A。 // 对于循环retain的情况,对象不能够释放,此时只能让一方使用assign一方使用retain,retain用于对象assign用于基本类型,assign时对cat的引用不会使cat对象计数器加1
阅读全文
摘要:Gamer.h Gamer.m House.h Huose.m main.m
阅读全文
摘要:/** 操作引用计数器的方式:每个对象内部(对象的堆内存里面)都有一个引用计数器变量,表示对象被引用的次数。 1:retainCount:获得对象的引用计数器的值 2:retain:能够让对象的计数器值变量+1,要想计数器变量加1就要调用对象的retain方法 3:release:让对象的计数器变量值 - 1,要想计数器变量减1就要调用对象的release方法 怎么判断对象被释放?...
阅读全文
摘要:/** 数组长度不固定,可以随便往里面添加或者删除元素。 1.创建数组 NSMutableArray *arrayM = [NSMutableArray array] 2.给数组添加元素(只能是OC对象) - (void)addObject:(id)anObject; 3.如何删除数组元素 */ #import int main(int argc, const ch...
阅读全文
摘要:Dog.h #import @interface Dog : NSObject { NSString *_name; int _age; char *cc; } @end Dog.m #import "Dog.h" @implementation Dog // 谁调用Self所在的方法,self就指向谁,self就是谁. - (instancetype)init...
阅读全文
摘要://01加强-10 @property 4.4前 1) @property + 手动实现 2) @property int age; + @synthesize age;//get和set方法的声明和实现都帮我们做了 3) @property int age + @synthesizes age = _b; @property 4.4增强 .h @property int age; 1)...
阅读全文
摘要:/** 1).判断对象是不是指定类的对象或者指定类的子类对象. - (BOOL)isKindOfClass:(Class)aClass; 2).判断对象是不是1个特定类型的对象,不包括子类. - (BOOL)isMemberOfClass:(Class)aClass; 3).判断1个类是不是另外1个类的子类. + (BOOL)isSubclassOfClass:(Class)...
阅读全文
摘要:/** id:万能指针 能够指向任何OC对象. id = NSObject *, id cat = [Cat new]; [cat jump]; NSObject:是所有类的父类,基类.可以指向任何OC对象. id:万能指针,可以指向任何OC对象. 区别:编译器对NSObject做类型检测,但是不对id做类型检测. */ #import ...
阅读全文
摘要:/** id:万能指针 能够指向任何OC对象. id = NSObject *, id cat = [Cat new]; [cat jump]; NSObject:是所有类的父类,基类.可以指向任何OC对象. id:万能指针,可以指向任何OC对象. 区别:编译器对NSObject做类型检测,但是不对id做类型检测. */ #import ...
阅读全文
摘要:Xcode4.4以后property做了增强
阅读全文
摘要:/** 点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时, 编译器会自动展开成相应的方法。切记点语法的本质是转换成相应的set和get方法, 如果没有set和get方法,则不能使用点语法。 点语法本质 就是set或者get方法. 1.遇见 s.age = 10;形式,会自动展开为:[s setAge:10]; 2.遇见 int a = s.age;形式,会自动展...
阅读全文
摘要:类中方法存储的原理: 2)当类声明一个对象,对象调用方法的时候,系统会把这个方法转换成SEL,然后拿这个SEL到类方法中去匹配。 [d run]; >SEL 寻找方法的过程: (4)注意:在这个操作过程中有缓存,第一次找的时候是一个一个的找,非常耗性能,之后再用到的时候就直接使用。
阅读全文
摘要:/** 什么是类对象(Class对象)? 类在内存当中也是以对象形式进行存储的. 1.类对象的类型:Class类型 2.如何创建类对象: 1)Class 类对象名 = [类名 class]; 2)类名 *对象名 = [类名 new]; Class 类对象名 = [对象名 class]; 3)只要用1个类创建的多个类对象,地址都一样. 3.如何使用类对象 ...
阅读全文
摘要:/** 为什么父类可以访问子类继承自父类的方法,但是无法访问子类独有的方法? 1.编译器编译时: 编译器在编译时,只检查指针变量的类型,确定该指针变量类型里面有下面调用的方法,如果有该方法,编译器就认为,是正确,可以编译通过. 2.运行时:会动态监测对象的真实类型.然后,调用对象自己的方法. 父类指针指向子类对象的这种形式,叫做多态. 当父类想要访问子类特有的方法时:强制类型...
阅读全文
摘要:/** 成员变量修饰符 1.@public:(公开)只要导入头文件,任何位置都可以直接访问. 2.@protected:(半公开)可以在本类和子类当中进行访问.(默认) 3.@private:(私有)只能在本类当中进行访问,子类无法进行访问赋值. 4.@package:在同一个框架内,直接访问. 私有方法: 1.父类当中在.m文件当中直接进行实现,但是没有在.h文件当中...
阅读全文
摘要:.h文件中子类父类不能定义同名的变量,.m文件中子类父类可以有相同的变量名。 super调用的直接父类,直接父类没有就是爷爷类。super在对象方法中只能调用父类的对象方法,在类方法中只能调用父类的类方法。
阅读全文
摘要:// // Person.m // OC基础第三天 // // Created by apple on 15/10/17. // // #import "Person.h" @implementation Person // 让人运动 - (void)sport { // self:自己 // 本质:是1个指针. // 位置:方法中. // 在对象方...
阅读全文
摘要:/** 匿名对象 1.访问成员变量--->只能给成员变量设置值,只能成功1次,每次都是新的对象. 2.调用方法时类似类方法: 跟类方法区别:匿名对象创建对象了,开辟空间了. */ #import #import "Student.h" int main(int argc, const char * argv[]) { @autoreleasepool { ...
阅读全文
摘要:Dog.h #import @interface Dog : NSObject { @public NSString *_name; int _color; int _speed; int _sex; float _weight; } - (void)eat; - (void)bark; - (void)run; - (BOOL)cmpCo...
阅读全文
摘要:// 11-【掌握】NSString 类简单介绍及用法 #import int main(int argc, const char * argv[]) { @autoreleasepool { //创建方式 //1. NSString * str = @"我是 啊哈哈"; //2. NSString * str1 =...
阅读全文
摘要:#import /* 设计一个“学生”类 1)属性 姓名 生日 用结构体作为类的实例变量(生日) 定义结构用来描述 生日 类名: Student 属性: _name, 结构体变量表示生日 */ //用来描述生日信息的结构体 struct MyDate{ int y; int m; int d; }; //创建一个类 //声明一个学生类 @inte...
阅读全文
摘要:// // main.m // 6-【掌握】对象和方法之间的关系 #import //声明人类 @interface Person : NSObject { @public NSString *_name;//名字 int _age ; //年龄 int _sex; //性别 1表示男 2表示女 3表示未知 } //方法 -(void)eat; //...
阅读全文
摘要:1、函数和对象方法的区别 以-开头的方法就是对象方法(即必须实例化对象才能使用的方法) 如: -(void)Run; 区别: (1)语法区别,并且对象方法都以-号开头,函数直接以返回值开头 (2)对象方法的声明只能写@interface...@end中间(不包括写成员变量处)、对象方法的实现 只能写在@implementation...@end中 (3)函数属于整个文件,可以写在文件中的任何...
阅读全文
摘要:// 3-【了解】#pragma mark指令的使用,用于查找代码。 #import //声明一个狗类 #pragma mark 声明狗类 @interface Dog : NSObject @end //实现一个狗类 #pragma mark 实现狗类 @implementation Dog @end //声明一个人类 #pragma mark - 对类进行分组 #pragma m...
阅读全文
摘要:// 13-【掌握】有参方法的声明实现和调用 #import void test(){ } @interface Person : NSObject { @public NSString *_name; int _age; float _weight; } //声明了一个有参数的方法,方法的返回值类型void;方法的名字是eat:参数有1个参数的...
阅读全文
摘要:// 12-【掌握】无参方法声明实现及调用 #import //类的声明 @interface Person : NSObject { @public NSString * _name; int _age; float _weight; } //声明无参数的方法 对象方法 返回值类型 为空类型void 方法的名字叫做eat - (void)eat; //...
阅读全文
摘要:// 11-【掌握】创建一个对象并访问成员变量 #import //声明 @interface Person : NSObject//类名的每个单词的首字母大写 { //@public 作用是让对象可以访问自己的对象属性 @public//后面都是public NSString * _name; int _age; float _weight; } /...
阅读全文
摘要://main.m //10-【掌握】类的声明和实现 //.h为类的声明,.m为类的实现,+表示类方法静态方法,-表示对象方法。.h文件中的方法都是public不能更改的。变量3中访问域:public,protected(子类),private(本类)。 #import //声明类 @interface Person : NSObject(父类名) { //声明属性变量的时候 前面一定...
阅读全文
摘要:show.h show.c main.m(oc源文件)
阅读全文
摘要:@可以表示oc的字符串和oc的关键字。 .mm是oc++的源文件,.m是oc的源文件。 万能指针就是可以指向任意类型数据的指针。typedef是取别名。define是宏定义。
阅读全文
摘要://#ifndef __OCDay01__aa__ //#define __OCDay01__aa__ //这2行是预编译指令,防止include的时候重复包含操作(a包含b,b又包含了a) #include //#include "bb.h" #import "bb.h" //#endif /* defined(__OCDay01__aa__) */ //import引入库函...
阅读全文

浙公网安备 33010602011771号