一
.
对象的存储细节
1. 当创建一个对象的时候:Person *p1 = [Person new],做了三件事情: 1.1,申请堆内存空间; 1.2,给实例变量初始化; 1.3,返回所申请空间的首地址; 2. 实例变量保存在堆区 3. 对象方法保存在代码区 4. 一个类可以创建多个对象; 二.两个使用的代码编辑指令 功能:对代码分组,方便代码查找和导航 使用格式: #pragma mark - #waring 等待处理的功能,或者是未完成的功能 三. 函数和对象方法的区别 对象方法: -(void)run; (1)对象方法的实现在@implementation...@end中 对象方法的声明只能写在 @interface...@end中间 (2)对象方法都以-号开头 (3)对象方法只能由对象来调用 (4)函数属于整个文件,可以写在文件中的任何位置,包括@implementation...@end中,但写在 @interface...@end会无法识别,函数的声明可以在main函数内部也可以在main函数外部。 (5)对象方法归对象所有 在想学习对象方法的时候就对比着C 语言的函数来学习: void run(); (1)所有的函数都是平行的 (2)函数不存在隶属关系 (3)使用的时候可以直接调用 (4)不可以访问对象中的成员变量 四. 对象和方法之间的关系 1.对象作为方法的参数 -(void) displayPerson:(Person *)person{ NSLog("姓名:%@",person->name); } 2.对象作为方法的返回值 -(Person *)changePerson:(Person *)person{ person->name = @"唐僧"; return person; } 一. NSString的创建和使用 1,创建常量字符串,注意使用“@“符号。(nsstring---->oc中专门用来表示字符串) NSString *astring = @"This is a String!"; //后面的是常量,前面的是指针变量 2,NSString *s1 = [NSString new];//没有意义 s1 =@"jian le ma"; 3、创建字符串的第三种方法 // 格式化创建字符串(按照指定的格式创建字符串) NSString *imgName = [NSString stringWithFormat:@"xxxxxx%02d.jpg",i]; 4、用一个已经存在的字符串创建一个新的字符串 NSString *s2 = [[NSString alloc] initWithString:s1]; 5.NSString长度计算方法. NSString *str = @"ban长"; [str length]; // 这个方法是oc专门用来表示字符串长度 二. 多文件开发 1,为什么要使用多文件? 在开发当中实现的功能一般会比较复杂, 所以会将类分成声明(.h文件)和实现(.m文件)部分, 2,在.h文件中写成员变量和方法的声明, 在.m文件中写成员变量和方法的实现. 这样写大大提高开发效率, 提高代码的维护性. 三,类方法 一. 特点: 1. 以加号( + )开头, 2. 调用格式: [类名 方法名] 二. 注意事项: 1. 类方法可以和实例方法同名, 相互之间互不影响 2. 类方法可以从父类继承而来,子类可以重写类方法 // ,如description类方法 3. 类方法和实例方法一样在interface里声明, 在implementation里实现。 4. 类方法由类名调用, 实例方法由对象调用。 5. 在类方法里使用了self, self指代的是调用者类 6. 在类方法中不能使用类的成员变量 7. 类方法和对象方法之间不能使用self相互调用 总结self : 谁调用当前方法, self就代表谁 (self 在oc中非常重要) 三. 类方法和对象方法的比较 1. 对象方法以减号开头, 可以使用成员变量 2. 类方法以加号开头,不能使用成员变量 3. 类方法使用场景 如果我们调用一个方法,该方法中不需要使用成员变量,那么我们可以将该方法声明为类方法 4. 匿名对象 匿名对象的使用场景: 当对象的方法只调用一次时,可以使用匿名对象来完成。 匿名对象优缺点 : 优点: 可以简化代码,方便方法调用;节省内存空间 缺点: 匿名对象实例化以后,只能使用一次 四. 封装(oc中重要的特,也是面向对象的语言的特性) 1.什么是封装: 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式 2. 封装的好处: 2.1 将变化隔离。(不管里面怎么变,使用者不需要知道) 2.2 便于使用。(使用者只需按照一定的方法使用就可以了) 2.3 提高重用性。(任何人都可以对已封装好的功能进行操作) 2.4 提高安全性。(由于暴露给使用者的只是一些外在的操作环节,而不是里面本质的东西,所以就提高了对他的维护性,也就是安全性) 3. 封装的原则: 3.1 将不需要对外提供的内容都隐藏起来。 3.2 把属性都隐藏,提供公共方法对其访问。 4. setter方法的实现 set方法的书写规范: 1) set方法一定是一个对象方法 2) set方法一定不能有返回值 3) set方法必须以set开头 4) set之后跟的是 实例变量去掉下划线,并且首字母大写 5)set方法一定有参数,而且参数的类型和实例变量的类型一致 6) set方法的形参名 一般是 去掉下环线的实例变量名 7)形参名不能和 实例变量名同名 8) set方法实现中,一定要用形参给实例变量赋值 成员变量: int _age; 的setter方法 -(void)setAge:(int)age{
_age = age; } get方法书写规范: 1) get方法一定是一个对象方法 2) get方法一定有返回值,返回值的类型和实例变量的类型要一致 3) get方法的方法名 是去掉下环线的实例变量名 4) get方法一定没有参数 5) get方法的实现中,一定是返回实例变量值 成员变量: int _age; 的setter方法 -(int)age{ return _age; } 五. 组合&依赖&关联 1. 组合: 把具有相同基类类型的对象组合到树形结构中,以表示“部分-整体”的层次结构,使得用 户对单个对象和组合对象的使用具有一致性。 2. 依赖: A对象作为B对象的局部变量或是方法形参, 说明B依赖与A, 这时候我们称A与B之间存在一种依赖关系 3.关联: 当一个对象拥有另外一个对象的时候, 当B对象为A对象的成员变量的时候,B对象与A对象之间存在一种关联关系。 |
oc学习第二站
最新推荐文章于 2024-08-19 07:48:50 发布