1,OOP 面向对象编程
2,结构体 结构体名 {
变量名
};
3,封装 继承 多态 三大特性
4,高内聚 低耦合
5,**枚举** 判断最常用 enum {log unloosen}用结构体创建对象 多了就是一个类
6,延展 类方法作用:保证
7,结构体三大要素:类型名 变量名 初值
8,类[特征 行为{返回值 方法名 行参}]
9,函数写法 * 传值和传址(参考博客)
10,行参是个条件
11四个可见度 (public private protected package(程序包,只在库内使用 外部开发者调用无效))
public 实例变量可以在类的外部和内部操作 p -> _hobby = @“听⾳乐、看电影”;
protected 实例变量只能在该类和其⼦类内操作
private 实例对象只能在该类内访问
@interface Person : NSObject
{
@public
NSString *_hobby; //兴趣
@protected
NSString *_name; //姓名
int _age; //年龄
@private
NSString *_sex; //性别
}
12¥¥¥¥关键词¥¥¥¥
类 object 父类 变量class isa deprecated 废弃的
对象People *p
成员变量 初始化后的变量name p 等
实例方法
类方法
属性 public private protected package 外部提供的接口 不使用public原因:是否需要进行初始化
延展
类目
13 在OC⾥,为实例变量赋值的⽅法称作setter (设置器)。
读取实例变量值的⽅法称作getter(访问器)。
OC⾥规定了setter和getter的书写格式。 如果⼀个实例变量是int age;或者int _age; setter的书写格式如下:- (void)setAge:(int)age;即set+⾸字⺟⼤ 写的实例变量名(忽略下划线)。 getter的书写格式如下: - (int)age;即返回值类型与变量类型⼀ 致,⽅法名与实例变量名相同(忽略下划线)
14 为什么不使用@public 是否需要初始化赋值 避免使用时外部的二次修改
15 ⽆论setter还是getter内部操作的是实例变量 每⼀个实例变量都需要⼀对setter和getter⽅法。
(setter 方法)***
封装1,初始化方法时必须给定的变量(即系统给定的 例如initwithfram)
2,给使用者安全(提供尽量少的外部接口 包括两部分 属性和方法)
3,简化代码(重用性强)
16 id 任意类型的指针对象
17 instancetype 实例类型 涉及具体类型的转换,耗时
18 import 拷贝代码
19 ¥¥¥。h引用同文件 两个类文件之间的循环引用 @class A(声明有这么一个类叫A,但是不知道这个类存不存在) 在。m 中不存在循环使用的问题¥¥¥ 但是协议除外,因为协议没有。m文件
20 方法的功能使用,假如一个方法的多次使用,即把该方法单独提取出来
21 实例变量:已经初始化过后的对象
对象:是一个类的指针(实例)变量
类
实例化方法 (-)
类方法 (+)
成员变量
属性:外部提供的接口 @property(nonatomic)NSInterger age
类目
延展
协议