iOS 面试题 (七)

2020-06-10  本文已影响0人  派大星的博客

一、计算机网络

计算机网络主要考量的还是传输层和应用层部分的知识。

二、算法

三 、数据结构

四 、编译原理

五 、操作系统

五 、数据库

六、 设计模式

7⃣️、概率论

7⃣️、Linux

八、版本控制

九、通用语言基础


【一】、iOS专业知识点

1、内存管理

(只有对不可变对象进行copy操作是指针复制(浅复制) )
(其它情况都是内容复制(深复制))

答案尽在: 探究Objective-C属性关键字

2、Block

3、多线程

4、Runtime

Objective-C Runtime Programming Guide

Objective-C Runtime Functions

load方法会在程序启动就会调用,当装载类信息的时候就会调用:优先调用类的load方法,之后调用分类的load方法。不过调用类的load方法之前会保证其父类已经调用过load方法。(程序启动 main()方法之前)

1. 一个类的+load方法在其父类的+load方法后调用

2. 一个Category的+load方法在被其扩展的类自由+load方法后调用.

3.当有多个类别(Category)都实现了load方法, 这几个load方法都会执行, 但执行顺序不确定(其执行顺序与类别在Compile Sources中出现的顺序一致)

1. 父类的initialize方法会比子类的initialize方法先执行

2. 当子类未实现initialize方法时, 会调用父类initialize方法.

子类实现initialize方法时, 会覆盖父类initialize方法.

3. 当有多个Category都实现了initialize方法, 会覆盖类中的方法,

只执行一个(会执行Compile Sources列表中最后一个Category的initialize方法)
initialize: 常用来初始化静态配置 static properties
load: 常用来 Method swizzling

4、Runloop


struct __CFRunLoop {

 CFRuntimeBase _base;

 pthread_mutex_t _lock; /* locked **for** accessing mode list */

 __CFPort _wakeUpPort;  // used **for** CFRunLoopWakeUp 内核向该端口发送消息可以唤醒runloop

 Boolean _unused;

 volatile _per_run_data *_perRunData; // reset **for** runs of the run loop

 pthread_t _pthread;  //RunLoop对应的线程

 uint32_t _winthread;

 CFMutableSetRef _commonModes; //存储的是字符串,记录所有标记为common的mode

 CFMutableSetRef _commonModeItems;//存储所有commonMode的item(source、timer、observer)

 CFRunLoopModeRef _currentMode;  //当前运行的mode

 CFMutableSetRef _modes; //存储的是CFRunLoopModeRef

 struct _block_item *_blocks_head;//doblocks的时候用到

 struct _block_item *_blocks_tail;

 CFTypeRef _counterpart;

};

Run Loop Source分为Source、Observer、Timer三种,他们统称为ModeItem。

EventLoop

5、第三方库的源码

6、生命周期

 init —>
 loadView —>
 viewDidLoad —>
 viewWillAppear —> 
 viewWillLayoutSubviews —>
 viewDidLayoutSubviews —>
 viewDidAppear —> 
 viewWillDisappear —>
 viewDidDisappear

6、UI

bounds和panGestureRecognize就是实现UIScrollView滑动效果的关键技术点。

7、数据存储

8、架构

9、OC 语言特性

10、其他




UIDocumentInteractionController: 主要是用来实现同设备上app之间的共享文档,以及文档预览、打印、发邮件和复制等功能。它的使用非常简单。

首先通过调用它唯一的类方法 interactionControllerWithURL:,并传入一个URL(NSURL),为你想要共享的文件来初始化一个实例对象。然后UIDocumentInteractionControllerDelegate,然后显示菜单和预览窗口。

    @IBAction func share(_ sender: UIBarButtonItem) {
        documentInteractionController = UIDocumentInteractionController()
        documentInteractionController.url = url
        documentInteractionController.uti = url.uti
        documentInteractionController.presentOptionsMenu(from: sender, animated: true)
    }

进程间通信的方法 - iOS (APP)进程间8中常用通信方式总结


必备书单

上一篇 下一篇

猜你喜欢

热点阅读