再看基础OC基础视频
来源:互联网 发布:python base64 key 编辑:程序博客网 时间:2024/06/04 23:29
基础OC语法
- OC中的内存管理的内容是 堆区的集成自NSObject 的对象
- 对象值为nil时. 引用计数器为0时, 不回收.
- MRC下 set方法的写法
- (void)serCar:(Car *)car{ if(_car != car ){ //----- 1 [_car release]; // -----2 _car = [car retain]; }}
- 注释 代码1 是为了避免如下情况
Car *byd = [Car new]; [person setCar: byd]; [byd release]; [person setCar: byd];
将bydset两次, 如果不加 if(_car != car) 判断, 因为_car 和car 是同一个对象, 调用 [_car release] 方法时, byd已经被释放了, 调用 _car = [car retain]; 时会出现野指针错误.
- 注释代码2, 是为了避免如下情况
Car *byd = [Car new];[person setCar: byd]; // ----4Car *bmw = [Car new];[person setCar:bmw]; // ---- 5[byd release];[bmw release];[person release];
- 因为set方法内部会将car retain 一次, 如果不加 [_car release]; 在执行代码4时, person的car指针指向byd. 而代码5后, person 的car指针指向bmw, 这就导致 byd 出现内存泄漏
- _weak 指向的对象被释放后, 系统会将 _weak的指针指向nil, 默认的指针就是强指针.
- 在ARC机制先, 对象释放的依据是 对象是否有强指针 指向该对象.
- (void)xxxx{ Car *car= [Car new];} // ------- 1
- 在1处 car 被释放了, 原因是局部变量 car释放了, 导致 car指向的 对象 没有了强指针指向, 所以对象被释放.
非正式协议, 本质就是给 Foundation框架中的类增加 category.
沙盒机制
- document: 保存需要持久化的数据 会自动备份
- Library/cache: 保存缓存文件, 不会备份
- Library/ Preference: 保存应用所有的偏好设置. 会自动备份
- temp 保存临时文件
- 把结构体包装成NSValue对象, 可以放到字典和数组里. 如可以吧 CGRect 包装成NSValue 类型 放到数组里.
MyStruct a = {19, 12};NSValue *v1 = [NSValue value1WithBytes:&a objectType:@encode(MyStruct)]; // 将自定的结构图转成 NSValueMyStruct b; [v1 getValue: &b]; // 将Value 转换成自定义的结构体
- copy
- 修饰符
- public 任意程序集
- protected 同一类和派生类
- private 同一类中
@interface Car:NSObject{ int _spend; // 使用这个方式声明成员变量 默认使用的是 protected}
static
- 修饰局部变量, 可以改变局部变量的作用域. 把局部变量作用域变成全局变量
- 修饰全局变量, 可以在本文件中使用.
类对象存储
Dog * d = [Dog new];
[]d run];- 先将代码加载到代码区
- 如果是第一使用Dog 类, 则在堆区分配空间, 实例化Dog类对象DogClass, 类对象DogClass 的isa指针指向代码区的Dog类代码. 类对象中还包含 方法的映射表. 即 方法与方法地址的映射.
- 在堆区分配空间实例化Dog类 dInstance, dInstance的isa指针指向类对象.
- 在栈区分配空间, 创建变量d. 变量b的指针指向dInstance 的首地址.
- 调用run方法, 把run 封装层SEL, 在类对象的方法映射表里查找 run对于的方法地址. 如果找到了就调用,如果没找到就报错.
- 如果找到run方法, 就将找到的结果缓存起来, 以提高性能.
刀哥网络
- 1Byte (字节)= 8bit(位)
- 1Char = 1Byte
- 监听 nc-lk port 监听本机 端口请求.
- 从网络上拉去 PList 文件, 从NSData 转成plist 文件 方法
id result = [NSPropertyLIstSeriaLization propertyListWithData:data option: 0 format:NULL error:NULL];
- 加密
- base64 将数据转成二进制文件, 按6位读取数据, 末尾不足补0, 每两个零 , 翻译成 等号, 在ios7.0 以后 增加了base64的支持.
- 散列(哈希)算法, 又叫 数据摘要. 数据指纹, 不能反算. 有名的 md5, SHA1. SHA256, SHA512, 都是这类型的加密,
- md5 特点1. 相同数据加密后得到的结果是一样的, 但是不同的数据, 哪怕是一点点的修改, 在结果上都有巨大的反差.
- HMAC 需要自己设置一个密码.
[self.passwordStr hmacMD5StirngWithKey:key]
先把key做一次散列加密,再 和密码一起做一次md5, 在加所一次散列加密, 再做一次md5.
- extern 表示字符串的具体内容在其他位置设置过值 (通常在.m) 中, 因为const的存在, 所以外部不能修改, 相当于声明了一个不可变得变量供外部使用
.hextern NSString *const UserloginNotif;.mNSString * const UserloginNotif = @"UserloginNotif";
阅读全文
0 0
- 再看基础OC基础视频
- OC基础
- oc基础
- OC 基础
- OC基础
- OC基础
- OC基础
- oc基础
- OC基础
- oc基础
- OC基础
- oc基础
- OC基础
- OC基础
- OC基础
- OC基础
- oc基础
- OC基础
- 蓝桥杯 历届试题 回文数字
- ucore lab6
- 2D游戏的战争迷雾实现方式
- freemarker 数字输出中的逗号问题,${temp}为空问题,时间问题(Java中Date)
- Deep Compression阅读理解及Caffe源码修改
- 再看基础OC基础视频
- DLL调用(3):Java JNA调用DLL
- HDU 5437(结构体重载、STL的应用模拟题)
- linux系统编程之文件I/O
- 梦里什么都有(状压DP)
- PYTHON GUI (PyQt5 安装问题解决)
- 2017-12-12 Python selenuim(续)
- 一个大的含有50M个URL的记录,一个小的含有500个URL的记录,找出两个记录里相同的URL。
- vue开发环境搭建以及项目创建