1.深拷贝、浅拷贝区别。数组里放对象,copy 数组,是深拷贝还是浅拷贝?数组里对象的指针是一样的吗?
浅拷贝:指针拷贝,不会创建一个新的对象。对指向对象的指针拷贝,产生一个新的指向对象的指针。两个指针指向同一个对象。对象的引用计数+1;
深拷贝:内容拷贝,会创建一个新的对象。深拷贝就是拷贝地址中的内容。
深拷贝和浅拷贝的本质是内存地址是否相同。
copy 可变数组是深拷贝。copy 不可变数组是浅拷贝。数组里对象的指针是一样的。
copy | mutableCopy | |
---|---|---|
NSString | NSString 浅拷贝 | NSMutableString 深拷贝 |
NSMutableString | NSString 深拷贝 | NSMutableString 深拷贝 |
NSArray | NSArray 浅拷贝 | NSMutableArray 深拷贝 |
NSMutableArray | NSArray 深拷贝 | NSMutableArray 深拷贝 |
NSDictionary | NSDictionary 浅拷贝 | NSMutableDictionary 深拷贝 |
NSMutableDictionary | NSDictionary 深拷贝 | NSMutableDictionary 深拷贝 |
2.布局使用 Masony 还是 Xib
3.StatefulWidget、StatelessWidget 区别
- Widget 是部分界面的不可变的描述信息。
- StatelessWidget 和 StatefulWidget 没有本质区别,他们的所有属性都是不可变的。它们都没法更新,除非用一个新的 Widget 去替换它们。
- StatefulWidget 拥有一个可变的 State。
StatefulWidget 和 StatelessWidget 的区别在于可变的 State。本质区别是能否自我重新构建(self rebuild)。
参考链接:简书-StatelessWidget和StatefulWidget的区别
4.UITableView、UICollectionView 的调用流程区别
5.常用的 pod 命令
pod init
: 创建 Podfile 文件。
pod install
:会根据 podfile.lock 文件中指定的 pod 依赖库的版本去拉去项目的 pod 依赖库。
pod install --no-repo-update
: 协作开发时使用此命令可以根据 podfile.lock 文件限制第三方库的版本。
pod update
:这个命令会检查 podfile.lock 文件中的 pod 依赖库的版本,并进行更新,会重新生成一个 podfile.lock 文件。
pod repo add NAME URL[branch]
:添加 pod 源。
pod search
:搜索可以使用的 pod 依赖库。
pod list
:列出所有项目依赖仓库中的 pod 依赖库。
pod repo
:用来管理 pod 依赖仓库的地址。
pod spec
:管理 pod 规范。
pod env
:来打印出 pod 的环境,一般是 podfile 文件中的内容。
pod cache
:管理 cocoapod 的缓存:可以用来清空内存,也可以用来查看每个 pod 库的缓存。
制作私有库使用
pod lib create [仓库名]
:在本地创建一个基于 pod 模板的 git 仓库。
pod lib lint
:pod 本地库验证,验证 .podspec 文件是否有错。
pod repo add NAME URL[branch]
:添加自己的 pod 仓库。
pod spec lint
:pod 远程库验证。
pod repo add xxx https://gitxxxx
:放置 spec 文件的 git 仓库地址,给自己添加私有仓库。
pod repo push 索引库名 podspec文件名
:命令执行会先将 pod 索引添加到本地的索引库,然后会自动推送到远程的索引库。
1 | Commands: |
6.图文混排有没有做过,有没有内存、性能问题
参考链接:简书-iOS开发之富文本(图文混排)
7.写过哪些脚本,有没有写过函数,按顺序执行的函数。
bugly、Fastlane、切换 SDK 配置文件
参考链接:菜鸟教程- Shell 教程
8.闪退捕获,Flutter 错误捕获
1 | void main() { |
参考链接:Flutter异常捕捉原理和异常上报
9.埋点是怎么做的?页面上的某一个 view 的停留时长怎么统计?
10.性能优化、图片加载优化、安装包大小优化做了啥,没用到的代码或图片有写脚本来检查吗?
未使用的代码可以用 AppCode 来检测。
未使用的图片可以用 LSUnusedResources 来检测。