再看基础OC基础视频

基础OC语法

  1. OC中的内存管理的内容是 堆区的集成自NSObject 的对象
  2. 对象值为nil时. 引用计数器为0时, 不回收.
  3. 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];  // ----4
Car *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 出现内存泄漏

  1. _weak 指向的对象被释放后, 系统会将 _weak的指针指向nil, 默认的指针就是强指针.
  2. 在ARC机制先, 对象释放的依据是 对象是否有强指针 指向该对象.
  - (void)xxxx{
    Car *car= [Car new];
}
   //   ------- 1
  • 在1处 car 被释放了, 原因是局部变量 car释放了, 导致 car指向的 对象 没有了强指针指向, 所以对象被释放.

  1. 非正式协议, 本质就是给 Foundation框架中的类增加 category.

  2. 沙盒机制

    • document: 保存需要持久化的数据 会自动备份
    • Library/cache: 保存缓存文件, 不会备份
    • Library/ Preference: 保存应用所有的偏好设置. 会自动备份
    • temp 保存临时文件

  1. 把结构体包装成NSValue对象, 可以放到字典和数组里. 如可以吧 CGRect 包装成NSValue 类型 放到数组里.
MyStruct a = {19, 12};
NSValue *v1 = [NSValue value1WithBytes:&a objectType:@encode(MyStruct)]; // 将自定的结构图转成 NSValue
MyStruct b; 
[v1 getValue: &b]; // 将Value 转换成自定义的结构体

  1. copy
对象可变性copymutableCopy
对象不可变不会开辟新地址会开辟新地址
对象可变开辟新地址会开辟新地址

  1. 修饰符
    • public 任意程序集
    • protected 同一类和派生类
    • private 同一类中
@interface Car:NSObject{
   int _spend;   // 使用这个方式声明成员变量 默认使用的是 protected
}

  1. static

    • 修饰局部变量, 可以改变局部变量的作用域. 把局部变量作用域变成全局变量
    • 修饰全局变量, 可以在本文件中使用.

  2. 类对象存储
    Dog * d = [Dog new];
    [d run];

    1. 先将代码加载到代码区
    2. 如果是第一使用Dog 类, 则在堆区分配空间, 实例化Dog类对象DogClass, 类对象DogClass 的isa指针指向代码区的Dog类代码. 类对象中还包含 方法的映射表. 即 方法与方法地址的映射.
    3. 在堆区分配空间实例化Dog类 dInstance, dInstance的isa指针指向类对象.
    4. 在栈区分配空间, 创建变量d. 变量b的指针指向dInstance 的首地址.
    5. 调用run方法, 把run 封装层SEL, 在类对象的方法映射表里查找 run对于的方法地址. 如果找到了就调用,如果没找到就报错.
    6. 如果找到run方法, 就将找到的结果缓存起来, 以提高性能.

刀哥网络

  1. 1Byte (字节)= 8bit(位)
  2. 1Char = 1Byte
  3. 监听 nc-lk port 监听本机 端口请求.
  4. 从网络上拉去 PList 文件, 从NSData 转成plist 文件 方法
id result = [NSPropertyLIstSeriaLization propertyListWithData:data option: 0 format:NULL error:NULL];

5 加密
* base64 将数据转成二进制文件, 按6位读取数据, 末尾不足补0, 每两个零 , 翻译成 等号, 在ios7.0 以后 增加了base64的支持.
* 散列(哈希)算法, 又叫 数据摘要. 数据指纹, 不能反算. 有名的 md5, SHA1. SHA256, SHA512, 都是这类型的加密,
* md5 特点1. 相同数据加密后得到的结果是一样的, 但是不同的数据, 哪怕是一点点的修改, 在结果上都有巨大的反差.
* HMAC 需要自己设置一个密码. [self.passwordStr hmacMD5StirngWithKey:key] 先把key做一次散列加密,再 和密码一起做一次md5, 在加所一次散列加密, 再做一次md5.


6 extern 表示字符串的具体内容在其他位置设置过值 (通常在.m) 中, 因为const的存在, 所以外部不能修改, 相当于声明了一个不可变得变量供外部使用

.h
extern NSString *const UserloginNotif;
.m
NSString * const UserloginNotif = @"UserloginNotif";

7 json 是什么?
json 是特殊格式的字符串.


8 能被NSJSONSerialization 是一个转换 JSON 和 Foundation对象的类. 能被序列化的要求:
* 顶级节点 必须是一个NSArray, 或者 NSDictionary
* 所以的对象必须是NSString, NSNumber, NSArray, NSDictionary, NSNull.
* 所以字典的key都必须是 NSString
* NSNumber 不能为空, 或者去穷大

9 如何判断一个对象能否被而序列化?
可以使用方法[NSJSONserialization isValidJSONObject: obj] 判断是否可以序列化


10 HTTP HEAD 方法. head方法用于向服务器请求头部信息, 不请求数据信息. 可以用在下载大文件时, 先向服务器请求头部信息, 获取文件总大小, 再请求文件数据, 就可以实现,现在进度显示.

11 断点续传
1. 断点续传不能用缓存
2. 断点续传告诉服务器从哪里开始传

NSString *range = [NSString stringWithFormat:@"bytes=%lld-", localFileSize];
[request setValue:range forHTTPHeaderField:@"Range"];

3. 断点续传的状态码是206


12 静态库: 每个程序都有一个副本. 动态库, 内存中只有一个副本, 多个程序共用一个库.


13 request. Header 中字段以及解释
* User-Agent 告诉服务器客户端的类型
* Content-Type 传递数据的类型
* Range 断点续传时使用
* Authorization 身份验证


14 NSURLSessionConfig 字段介绍
* HTTPAdditionalHeader 一个session的全局头字段, 对于很多的请求都需要的头数据,可以使用这个字段统一设置
* allowsCellularAccess 允许蜂窝访问
* HTTPMaximumConnectionsPerHost 对于一个host的最大并发连接数, 默认是4


15 在给NSURLSession 设置代理的时候, Session会对代理有强引用, 为了避免循环引用, 在视图消失, 或者不不需要网络请求的时候, 使用 [_Session invalidateAndCancel]; _Session = nil; 一旦被调用, Session就不能用了

基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值