字典 字典只能存储对象
key - value 里面存的东西都是键值对
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"jack",@"name",
@"18",@"age" ,nil];
数组
数组里面也只能存储对象
NSArray *arr = @[@10]; 将10包装成NSNumber
NSNumber
NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue
NSValue
+ (NSValue *)valueWithPointer:(nullable const void *)pointer;//将结构体转化为对象
互斥锁
使用前提:多条线程抢夺同一个资源
//<#token#>锁对象
// <#statements#>需要锁定的代码
@synchronized (<#token#>) {
<#statements#>
}
原子和非原子属性
oc在定义属性的时候有nonatomic和 atomic两种选择
- atomic :原子属性,为setter方法加锁(oc默认就是atomic),线程安全,需要消耗大量资源
- nonatomic: 非原子属性,不会为setter方法加锁,非线程安全,适合内存小的移动设备
文件存储路径
- Documents
- Library
- Caches
- Prefrence
- tmp
网络请求
HTTP 协议规定:一个完整的HTTP请求中包含以下内容
- 请求头
- 请求体
AFN
AFHTTPSessionManager* httpManager =[AFHTTPSessionManager manager];
_httpManager.responseSerializer = [AFJSONResponseSerializer serializer];//解析服务器返回的json数据
_httpManager.responseSerializer = [AFHTTPResponseSerializer serializer];//直接使用服务器本来返回的数据,不做任何解析
_httpManager.responseSerializer = [AFXMLParserResponseSerializer serializer];//解析服务器返回的XML数据
NSString和NSData的相互转化
NSData *data = [@"111" dataUsingEncoding:NSUTF8StringEncoding];
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
json数据和OC对象
- {} -> NSDictionary@{}
- [] ->NSArray @[]
- "jack"-> NSString @"jack"
- 10 ->NSNumber@10
- 10.5 -> NSNumber@10.5
- true -> NSNumber@1
- false ->NSNumber@0
- null ->NSNull
NSRunLoop
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[[NSRunLoop currentRunLoop] run]; //子线程的runloop需要手动开启
});
推送的流程
1 客户端发送设备的UUID和应用的Bundle ID给苹果的APNs
2 苹果服务器加密生成一个deviceToken给客户端
3 客户端把这个devicetoken发送给我们的服务器
4 服务器把devicetoken存储服务器
5 苹果推送消息通过devicetoken找到要发给谁消息
加速器
NS_CLASS_DEPRECATED_IOS(2_0, 5_0, "UIAccelerometer has been replaced by the CoreMotion framework") __TVOS_PROHIBITED
@interface UIAccelerometer : NSObject
core motion框架 做陀螺仪 加速计 计步器等
动态库和静态库
- 静态库
.a 和 .framework - 动态库
.dylib 和 .framework
自己的静态库添加的位置
CPU架构
- 每一个设备都有属于自己的CPU架构
- 模拟器
4s -> 5 :i386
5s ->6p :x86_64 - 真机
3gs-4s :armv7
5/5c :armv7s (静态库只要支持armv7就可以在armv7s的架构上跑)
5s-> arm64
-
每一个静态库支持的架构都是固定的(liblibstatic.a)
QQ20190807-103002.png
查看静态库支持的架构
终端: lipo - info liblibstatic.a
静态库的合并
终端: lipo - creat 静态库1 静态库2 -output 新的静态库
3D2AAC3879FE4F282B7D79DB345071B9.png
地图
LBS :Location based service
SoloMo : social Location Mobile (索罗门)
懒加载的作用
- 防止对象被提前创建
- 防止对象被重复创建
- 防止对象使用的时候还没有被创建
- 可以在懒加载方法里面进行初始化操作
新特性
@property(nonatomic,strong,nonnull)NSArray *names;
@property(nonatomic,strong)NSArray * __nonnull names;
//nonnull/__nonnull getter 和setter都不能为nil
@property(nonatomic,strong)NSArray * __nullable names;
@property(nonatomic,strong,nullable)NSArray * names;
//__nullable/nullable getter 和setter都可以为nil
//默认情况下不加nullable getter 和setter都可以为nil
@property(nonatomic,strong,null_resettable)NSArray * names;
//null_resettable setter可以为nil getter不可以为nil
//_kindof
- (__kindof NSString *)xxx{
}
网友评论