iOS 开发必备tips
1、以下可变字典设置值的方式有什么区别?(新人很容易犯的错误)
1 |
|
(1)使用setObject:forKey:方法时,object不能为nil,否则会直接crash,抛出NSInvalidArgumentException异常
(2)使用可变字典的语法糖方式会直接调用setObject:forKeyedSubscript:方法,object为nil时,会导致可变字典中对应key的value被移除。key不能为nil,否则会直接crash,抛出NSInvalidArgumentException异常
结论:在日常开发的过程中,可变字典的赋值建议使用语法糖的方式,避免不必要的线上crash。
2、开启xcode编译时间显示(编译优化)
1 | 在终端执行以下命令: |
测量每个构建任务所花费的时间:Xcode -> Product -> Perform Action-> Build With Timing Summary
3、Objective-C源码重写成C++
1 | clang -rewrite-objc main.m |
应用场景:简述Objective-C中block的实现
4、将Swift代码转换为SIL(中间码)
1 | swiftc -emit-silgen -O main.swift |
应用场景:查看函数派发方式
5、Objective-C项目中宏定义和常量使用方式
(1)宏定义:(过多会降低编译速度)
1 | #define kScreenWidth [UIScreen mainScreen].bounds.size.width |
(2)全局静态变量(文件内可见)
1 | static NSString *const kCellIdentity = @"CellIdentity"; |
(3)extern全局变量(所有文件可见,跨组件建议使用,多用FOUNDATION_EXTERN)
1 | 在.h文件中声明: |
FOUNDATION_EXTERN这个宏有用过.mm文件的人会深有体会,C++需要 extern “C”
6、LLDB常用命令
1 | po:打印对象 |
7、消除Xcode警告(建议在开发的过程中就把警告解决掉)
1 |
|
8、NS_ASSUME_NONNULL_BEGIN
与 NS_ASSUME_NONNULL_END
它表示将两个宏包裹的区域块标记为nonnull。
如果需要某个参数单独声明成可为空,只需要在参数前面加上nullable修饰即可(OC和Swift混编项目中,建议在OC代码指定nonnull或nullable)。
1 | NS_ASSUME_NONNULL_BEGIN |
9、iOS开发中如何查看预处理后的代码(展开宏定义或条件编译)
场景1:常见的三方开源库中有很多宏把一大串代码给包了起来,这个时候查看预处理后的代码更方便我们进行源码分析
场景2:查看宏定义替换后代码是否满足预期1
2
3
4
5
6
7
8方法一:
Xcode -> Product -> Perform Action -> Preprocess “xx.m”
方法二:
Xcode -> Editor -> 勾选“Assistant” -> Preprocess
方法三:
clang -E xx/xx.m
10、iOS中宏的#和##用法(OC的三方库中常见)
1 | // 定义版本号 |
11、OC中CGFLOAT_MAX、CGFLOAT_MIN宏在Swift用什么替代?
12、NSDateFormatter中yyyy和YYYY的区别(曾经出过线上bug)
13、静态库真机和模拟器架构合并
14、查看包大小
15、CocoaPods 管理,当开启 use_frameworks!区分framework中是静态库还是动态库?
16、如何查看framework是否是静态库和动态库:
17、OC与Swift混编项目中指定OC方法在Swift中的调用函数名
18、OC中的方法屏蔽Swift的调用(针对Swift隐藏API,只在OC中可调用对应方法)
19、iOS开发中常见的__attributes__
(clang attributes)使用
20、非越狱手机如何下载App Store上的IPA包
21、低版本Xcode调试高版本iOS系统(Could not locate device support files)
22、查看Mac系统架构
23、@property(class)属性的使用
24、iOS App 防止抓包,网络层配置请求不走全局设置代理(只能提高防抓包门槛,自己衡量得失)
25、Objective-C中可变参数的用法(相关知识点见文末【Argument-Macros】)
26、Swift中可变参数的用法
27、OC中复合语句的使用(常见于UI控件的初始化)
28、iOS 系统中的“设置->辅助功能”(Accessibility)造成的各种显示异常问题
参考资料
完整优秀版请移步小专栏:
iOS 开发必备tips
更多好文推荐,扫描下方的二维码,关注《iOS开发秘籍》公众号,点关注不迷路!
本文内容中部分来自网络,后续会持续更新完善。欢迎一起学习交流!
如需转载,请注明出处