iOS技能要点

2017-08-24  本文已影响0人  SunshineDayss

1、生成二维码

        创建滤镜对象(CIFilter) -> 恢复滤镜的默认属性 -> 设置数据(NSString -> Nsdata) -> 通过KVC给滤镜设置输入值 -> 获取滤镜输出图像(CIImage -> UIImage) -> 开启上下文绘图 -> 把二维码画上去 -> logo画上去 -> 获取图片 -> 关闭图形上下文

2、扫描二维码

        获取设备支持状态 -> 初始化 -> 生成输出对象 -> 设置代理(AVCaptureMetadataOutputObjectsDelegate) -> 生成会话 -> 产生输出 -> 采集渲染 -> 启动扫描

3、多线程

        NSOperationQueue是用GCD封装的,GCD更底层、NSOperationQueue更抽象,所以GCD在性能上比较快

        从一步操作的顺序与依赖关系上来讲,GCD实现的代码量比NSOperationQueue多

        如果需要更多的异步交互与UI呈现,NSOperationQueue更好,如果需要更高的并发能力,GCD更好。

        UI更新必须放在主线程

        GCD通过block封装,不需要管理线程的创建/销毁/复用的过程

4、支付

        填写APPID/私钥 -> 生成订单信息及签名 -> 将订单信息拼接成字符串 -> 调用signString函数生成签名并且base64加密 -> 把签名数据给支付宝 -> 调用支付结果开始支付

        注意事项:URL Scheme 、 检查私钥

5、https协议

        对称加密(加密与解密使用相同密钥)

6、iOS缓存

        CoreData:取出上下文管理者(managedObjectContext) -> 保存数据 -> 查询数据    editor->Add Model Version(更新版本修改子段) 

        plist: NSHomeDirectory()

        NSUserDefaults、FMDB

        NSKeyedArchiver(归档):继承NSObject,遵循NSCoding协议 - (void)encodeWithCoder:(NSCoder *)aCoder

7、推送/通知

        在didRegisterForRemoteNotificationsWithDeviceToken中注册推送

        iOS10.0: willPresentNotification(前台)、didReceiveNotificationResponse(后台)

        iOS7.0-10.0:didReceiveRemoteNotification

        登录成功的时候给当前用户设置别名/唯一标识符

1、讲一下MVC、MVVM、MVP ?

    MVC:    逻辑、视图、数据分层,实现洁柔

    MVVM:  Model—View-ViewModel,将一部分逻辑和数据处理从Controller搬到ViewModel中

              低耦合    View和Model独立变化

              可重用性  视图逻辑放到ViewModel中,让很多View重用这段视图逻辑

              独立开发

              可测试性

    2、属性(几个部分、关键字)? @dynamic、@synthesize ?

    属性:        描述类的特征

    三个部分:    带下划线的成员变量、getter、setter方法

    关键字:      readwrite、assign、atomic

    @dynamic:  修饰的属性,getter、setter方法不自动生成

    @synthesize:修饰的属性,getter、setter方法会自动生成,指定与属性相对应的成员变量

    3、滑动UITableViewCell,NSTimer是否刷新 ?

    NSDefaultRunLoopMode        空闲状态

    UITrackingRunLoopMode        UIScrollView滑动时会切换到该Mode

    UIInitializationRunLoopMode  run loop启动时,切换到该mode

    4、有a、b、c、d 4个异步请求,如何判断a、b、c、d都完成,如果需要a、b、c、d顺序执行,该如何实现 ?

    是否执行完成:GCD的group

    dispathc_group_t group = dispatch_group_create()

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

    dispathc_group_async(group, queue, ^{“任务”})

    顺序执行:  放到串行队列当中

    5、多线程

    GCD:

    NSThread:

    NSOperationQueue:

    6、CoreData使用、更新版本

    使用:    新建实体,添加属性

              获取代理和托管对象

              链接数据库

              KVC添加数据

    options:  nil -> options: NSDictionary

上一篇下一篇

猜你喜欢

热点阅读