美文网首页
iOS 杂谈

iOS 杂谈

作者: 一直很安静_25ae | 来源:发表于2019-08-06 18:06 被阅读0次

字典 字典只能存储对象

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

自己的静态库添加的位置

QQ20190807-104346.png

CPU架构

  • 每一个设备都有属于自己的CPU架构
  1. 模拟器
    4s -> 5 :i386
    5s ->6p :x86_64
  2. 真机
    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{
    
}

相关文章

  • NSTimer CADisplayLink GCD计时器的深入探

    关于NSTimer CADisplayLink GCD计时器的杂谈 ** NSTimer ** iOS中最常用的定...

  • iOS 杂谈

    页面刷新的时候,会停止动画。 iPhone X 适配 iPhone X 适配 ViewController 子Vi...

  • ios杂谈

    NSMutableSet *set=[NSMutableSet new]; NSMutableArray *arr...

  • iOS 杂谈

    字典 字典只能存储对象 key - value 里面存的东西都是键值对 数组 数组里面也只能存储对象 NSNu...

  • iOS 杂谈dyld

    哈罗,大家好好久没有更新iOS专栏的内容了,今天想与大家聊一聊iOS的dyld的内容,想用杂谈的形式与大家侃侃分享...

  • iOS线程杂谈

    iOS中的多线程技术主要有NSThread, GCD和NSOperation: 串行: 串行队列一次只能执行一个任...

  • iOS 架构杂谈

    一. 开篇 1. 一句话概括客户端其实大部分都在干些什么事情? 简单来说就是调用 API,展示页面,然后跳转到别的...

  • iOS开发杂谈

    已经从事iOS开发很多年了,想要继续往前走,无非是拥有精湛的技术。精湛技术的标准是,iOS知识从广度和深度都有所涉...

  • iOS-杂谈

    一.看看你是什么级别的? 初级:会用,需要掌握oc语言、UIKit、网络传输、第三方库初级iOS工程师 中级:为什...

  • 创业杂谈--AR App竞品分析

    前序 创业杂谈--起由 创业杂谈--创业方向 创业杂谈--创业团队 那么这篇我们来看看AR App竞品。 在App...

网友评论

      本文标题:iOS 杂谈

      本文链接:https://www.haomeiwen.com/subject/uaswdctx.html