iOS 杂谈

2019-08-06  本文已影响0人  一直很安静_25ae

字典 字典只能存储对象

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两种选择

文件存储路径

网络请求

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对象

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框架 做陀螺仪 加速计 计步器等

动态库和静态库

自己的静态库添加的位置

QQ20190807-104346.png

CPU架构

  1. 模拟器
    4s -> 5 :i386
    5s ->6p :x86_64
  2. 真机
    3gs-4s :armv7
    5/5c :armv7s (静态库只要支持armv7就可以在armv7s的架构上跑)
    5s-> arm64

查看静态库支持的架构

终端: 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{
    
}
上一篇 下一篇

猜你喜欢

热点阅读