OC 基础知识梳理

一、ViewController的生命周期

- (void)loadView{
    
    [super loadView];
    
    NSLog(@"%s",__func__);
    
}

- (void)viewDidLoad {
    
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    NSLog(@"%s",__func__);
}

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    NSLog(@"%s",__func__);
    
}

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    NSLog(@"%s",__func__);
}

- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    NSLog(@"%s",__func__);
}

- (void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    NSLog(@"%s",__func__);
}

2021-06-15 20:46:32.215679+0800 TestVC[7923:804814] -[ViewController loadView]

2021-06-15 20:46:32.215922+0800 TestVC[7923:804814] -[ViewController viewDidLoad]

2021-06-15 20:46:32.216450+0800 TestVC[7923:804814] -[ViewController viewWillAppear:]

2021-06-15 20:46:32.271312+0800 TestVC[7923:804814] -[ViewController viewDidAppear:]

2021-06-15 20:47:06.964063+0800 TestVC[7923:804814] -[ViewController viewWillDisappear:]

2021-06-15 20:47:07.493666+0800 TestVC[7923:804814] -[ViewController viewDidDisappear:]

那么一开始就是init-->loadView-->viewDidLoad-->viewWillAppear-->viewDidAppear-->viewWillDisappear-->viewDidDisappear

 

二、OC的关键字

分类属性关键字
原子性atomic nonatomic
读写性wr ro setter getter
内存管理assign weak unsafe_unretain retian strong copy

 

 

 

 

 

原子性

属性关键字用法
atomic编译器会自动生成互斥锁,对setter getter方法进行加锁,可以保证属性赋值和取值是线程安全的,但不包括操作和访问
nonatomic一般属性用nonatomic修饰

 

 

 

 

 

读写性

属性关键字用法
rw可读可写 setter & getter
ro只读 getter 
setter指定生成setter方法名
getter指定生成getter方法名

 

 

 

 

 

 

内存管理

属性关键字用法
assign

1.修饰对象 基本数据类型和对象类型

2.setter方法的实现是直接复制,一般用于基本数据类型

3.修饰基本数据类型:BOOL等

4.修饰对象类型时,不增加其引用计数

5.会产生悬垂指针(悬垂指针:assign 修饰的对象在被释放之后,指针仍然指向原对象地址,该指针变为悬垂指针。这时候如果继续通过该指针访问原对象的话,就可能导致程序崩溃)。

weak

1.只能修饰对象类型

2.ARC下使用

3.修饰弱引用,不增加对象引用计数,可以避免循环引用

4.weak修饰的对象在释放之后,会讲指针置为nil,不会产生悬垂指针

unsafe_unretained

1.可以修饰基本数据类型和对象类型

2.MRC下使用

3.unsafe_unretained会产生悬垂指针

retain

1.MRC下使用

2.修饰强引用,将指针原来指向的旧对象释放掉,同时将新对象的引用计数加1

strong

1.ARC下使用

2.和Retain一样

3.修饰block时,strong相当于copy,而retain相当于assign

copysetter方法的实现时release旧值,copy新值,用于NSString block

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三、计算机网络七层级

OSI七层网络模型 
应用层与其他计算机进行通讯的应用 telnet http FTP
表示层定义数据格式和加密 ASCII等
会话层定义如何开始控制和结束一个会话:RPC SQl
传输层选择恢复协议,复用数据流的输入,对数据包进行排序,TCP UDP SPX
网络层定义了包的传输,标识结点的逻辑地址,将一个包分解成更小的包:IP IPX
数据链路层定义了单个链路上如何传输数据 ATM FDDI等
物理层定义了有关介质、链接头,帧、帧的使用,电流,编码以及光调制等规范

 

 

 

 

 

 

 

 

 

四、两个子视图找到同一个VC

五、判断block的类型

有Global。Stack。Malloc

没有访问auto变量就是Global,在ARC环境下编译器会自动将栈上的blockcopy到堆上

六、MVVM

MVVM(Model–view–viewmodel)是一种软件架构模式。 MVVM有助于将图形用户界面的开发与业务逻辑或后端逻辑(数据模型)的开发分离开来,这是通过置标语言或GUI代码实现的。 MVVM的视图模型是一个值转换器, 这意味着视图模型负责从模型中暴露(转换)数据对象,以便轻松管理和呈现对象。

七、分类的优缺点

可以为现有的类添加新方法的方式,利用OCRuntime分配机制。

把类的实现分开在不同的文件里面,方便代码管理,创建私有方法的向前引用。向对象添加非正式协议。同时也具有局限性:

只能给某个已有的类拓展方法;不能扩充成员变量,用关联对象添加属性;当分类中方法名和类中的方法名一样分类中的方法名会覆盖原类的方法名;多个方类中存在同名方法,运行时调用最后参与编译的方法会被调用。

八、性能优化着手点

CPU层面  GPU层面 耗电优化  网络优化 定位优化  硬件检测优化 app启动优化 冷启动和 热启动 安装包瘦身

https://www.jianshu.com/p/c51106cbea05

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值