对象方法:
1、声明和实现方法时候,以 -开头
2、对象方法是隶属于对象,只能通过对象调用
3、对象方法中可以直接访问成员变量,因为对象方法和成员变量都是隶属于该对象的
4、对象方法中可以调用其他对象方法
5、对象方法中也可以调用类方法
类方法:
1、声明和实现的标识符都是 +
2、类方法它是属于类本身的
3、类方法是直接通类名调用的,不能通过对象调用
4、类方法不能访问成员变量,因为成员变量是对象的,不是类的
5、在类方法中不能直接调用对象方法,也就是说不能通过self来调用对象方法
如果你要再类方法中调用对象方法
1、在类方法中创建一个对象
2、把对象作为形参传入
类方法优点:
1、调用类方法不用创建对象,所以节省内存
2、通过对象调用对象方法,首先要通过对象找他isA指针,然后在去类中找相应的方法,所有比较慢
3、直接通过类调用方法,直接找到这个类然后调用相应的方法就OK了,所有类方法的效率比较高
4、当方法中不需要使用到成员变量的时候就使用类方法
封装:
1、类是数据与功能的封装,数据就是成员变量,功能就类方法或对象方法
2、对数据的封装
如果我们把属性设置为@public那么,这个属性外部就可以任意的修改,我们就失去管理这个属性的权利
1、当你把属性暴露在外部的时候,那么你就是失去对它的管理,一旦这个属性被多个人用的时候,如果再像管理这个属性就变得非常麻烦,这个类的可维护性就变得很差
2、怎么对数据进行封装
1、为每一个属性提供getter 和 setter方法
2、setter方法:又称为写方法,赋值给对象赋值
1、必须是对象方法
2、它没有返回值
3、名字 set + 属性名称去掉下划线,首字母大写
4、必须提供一个参数,参数类型必须与所对象的成员变量的类型一致
3、getter方法:又称为读方法,赋值读取属性的值
1、必须是对象方法
2、必须要返回值,并且返回值类型要与成员变量类型一致
3、方法名必须是成员变量去掉下划线
4、一定是空参的
1、NSString
1、NSString对象的创建
1、通过字面量的方式
NSString *str = @"字面量";
2、通过对象方法
NSString *str = [NSString alloc];
str = [str initWithUTF8String:"C语言字符串"];
可合并一句
NSString *str = [[NSString alloc] initWithUTF8String:"C语言字符串"]
3、通过类方法创建
NSString *str = [NSString stringWithFormat:@"格式化字符串",....];
格式化字符串:它的格式符与NSLog中的相同
2、计算字符长度
[str length];//计算字符串中字符个数的,一个中文占用一个字符
2、BOOL类型:它是一种逻辑类型,逻辑类型只有真和假,YES 为真 NO假
1、定义变量
2、做函数或方法的形参类型
3、作为函数或方法的返回值类型
BOOL类型的本质: char
YES 1
NO 0
3、对象与函数
0、函数:C语言中函数,他们之间是平行的,没有谁隶属于谁的关系,调用直接通过函数名调用的,可以在文件的任意位置
1、对象作为函数参数传递是地址传递,如果在函数中通过形参来改变对象中属性,那么它会影响实参的中对象的属性
2、形参对象在可以函数访问自己的成员也可以调用自己的函数
3、对象可以函数的返回值
4、对象在函数中可以连续传递
4、对象与方法
0:方法OC中的,在定义类的时候声明和实现方法,它是隶属于某个对象或某个类的,调用的时候必须通过对象或类来调用;
1、对象作为方法参数传递是地址传递
2、对象在方法中也可以访问自己的成员变量,也可以调用自己的函数
3、对象也可以方法的返回值
4、对象可在方法中连续传递
5、多文件开发
1、为了方便程序管理,我们把一个类分为两个文件
.h 文件:用来存放类的声明,它是给使用该类的人看的,声明就相当于表盘
.m 文件:用来实现的类的方法的,就表内部实现,如齿轮
2、当我们需要使用某个类的时候,需要导入这个类的头文件,不能导入实现文件
3、当某两个类直接出现循环包含的时候,一端必须使用@class来声明这个类
4、@class 仅仅是告诉编译器这是一个类,其他关于类本身信息它都不知道,所这@class一般仅仅用在头文件中