iOS开发进阶(唐巧)读书笔记(一)
程序员文章站
2023-11-09 21:03:04
如何提高iOS开发技能 1、阅读博客: "https://github.com/tangqiaoboy/iOSBlogCN" 40多位iOS开发博主的博客地址 2、读书:每年阅读一本高质量的iOS开发书籍 3、看WWDC视频 4、看苹果的官方文档 5、看开源项目的代码 6、多写代码,多思考 7、多和 ......
如何提高ios开发技能
1、阅读博客:https://github.com/tangqiaoboy/iosblogcn 40多位ios开发博主的博客地址
2、读书:每年阅读一本高质量的ios开发书籍
3、看wwdc视频
4、看苹果的官方文档
5、看开源项目的代码
6、多写代码,多思考
7、多和同行进行交流
8、分享
第一部分:ios开发工具
1、reveal界面调试工具
1、虚拟机集成
2、真机集成(ios开发进阶p47)
vim ~/.lldbinit command alias reveal_load_sim expr (void*)dlopen("/applications/reveal.app/contents/sharedsupport/ios-libraries/libreveal.dylib", 0x2); command alias reveal_load_dev expr (void*)dlopen([(nsstring*)[(nsbundle*)[nsbundle mainbundle] pathforresource:@"libreveal" oftype:@"dylib"] cstringusingencoding:0x4], 0x2); command alias reveal_start expr (void)[(nsnotificationcenter*)[nsnotificationcenter defaultcenter] postnotificationname:@"ibarevealrequeststart" object:nil]; command alias reveal_stop expr (void)[(nsnotificationcenter*)[nsnotificationcenter defaultcenter] postnotificationname:@"ibarevealrequeststop" object:nil];
2、移动统计工具
国外:flurry(不会被墙)
国内:友盟
3、crash统计工具
crashlytics
bugly(腾讯)
4、app store统计工具
app annie
第二部分:ios开发实践
1、corefoundation对象的内存管理
- cfstringref
cfstringcreatewithcstring(kcfallocatordefault, “hello world”, kcfstringencodingutf8)
-
cf对象转换成oc对象
- __bridge:只做类型转换,不修改相关对象的引用计数,原来的cf对象在不用时,需要调用cfrelease方法
- __bridge_retained:类型转换后,将相关对象的引用计数加1,原来的cf对象在不用时,需要调用cfrelease方法
- __bridge_transfer:类型转换后,将对象的引用计数交给arc管理,cf对象在不用时,不在需要调用cfrelease方法
2、gcd
- 执行一次
dispatch_once
代码提示 - 延迟执行
dispatch_after
代码提示 - 自定义queue
dispatch_queue_t urls_queue = dispatch_queue_create(“blog.devzhang.com”, null); dispatch_async(urls_queue, ^{ }); dispatch_release(urls_queue);
- 多线程处理,最后汇总结果(具体使用?)
dispatch_group_t group = dispatch_group_create(); dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{ // 并行执行的线程一 }); dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{ // 并行执行的线程二 }); dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{ // 汇总结果 });
1、nsjsonserialization
比 nskeyarchiver
更好
在选择持久化方案时,系统提供的
nsjsonserialization
比nskeyarchiver
在效率和体积上都更好。nsjsonserialization
比nskeyarchiver
快了7倍,体积小了一半
网上有详细的测试:https://github.com/randomsequence/nsserialisationtests
2、慎用block
block
容易产生循环引用问题
从架构层面来看,如果在使用block
时需要时刻注意避免循环引用问题。那么还不如不使用block
。用delegate
来实现要安全的多
注意:类方法绝不会产生循环引用!
3、忽略编译警告⚠️
推荐阅读
-
iOS开发进阶(唐巧)读书笔记(一)
-
【原】iOS开发进阶(唐巧)读书笔记(二)
-
IOS开发教程第一季之UI进阶day2合并IOS学习013--App启动过程、多控制器管理
-
IOS开发教程第一季之UI进阶day8合并IOS学习019--敲击、长按、轻扫、旋转,CALayer、锚点,CADisolayLink刷新,核心动画,关键帧动画,组动画,转场动画,画板案例
-
【读书笔记】iOS-成为一名开发者
-
【原】iOS开发进阶(唐巧)读书笔记(二)
-
IOS开发教程第一季之UI进阶day2合并IOS学习013--App启动过程、多控制器管理
-
【读书笔记】iOS-成为一名开发者
-
IOS开发教程第一季之UI进阶day8合并IOS学习019--敲击、长按、轻扫、旋转,CALayer、锚点,CADisolayLink刷新,核心动画,关键帧动画,组动画,转场动画,画板案例
-
IOS开发教程第一季之UI进阶day6合并IOS学习017--绘图2