开源软件名称: sopig/deepin开源软件地址: https://github.com/sopig/deepin开源编程语言: 开源软件介绍:
##TODO
iOS资深开发者必备基础技能
####
UI
基础控件:UIButton、UIImageView、UILabel、UIView and so on...
高级控件:UITableview、UICollectionView主要任务是高级控件的性能优化工作
屏幕适配:Autoresizing、AutoLayout、SizeClass、Masonary
多控制器管理:UINavigationController、UITabbarController、自定义控制器管理
Quartz2D、核心动画、事件处理、手势、UIDynamic
高级技能
UNIX环境高级编程
UNIX环境网络编程
基于CoreText的排版引擎定制
Xcode插件开发
ReactiveCocoa
React Native
蓝牙4.0(BLE)+ 运动手环开发+智能家居
APP高性能架构:MVC、MVVM、MbMVC
iOS编码设计模式的深度理解代理、单例、工厂、观察者等
APP架构经验谈
XMPP+环信\容联云通讯+即时通讯
人脸识别 (face++)
多线程网络
NSThread、NSOperation、GCD、pthread
socket、TCP/IP
网络安全、加密算法、https
NSURLConnection、NSURLSession、UIWebView、AFNetworking,SDWebImage、kingFisher,MJRefresh、MJExtension
HTML5
HTML、CSS、JavaScript
响应式布局、BootStrap、JQuery、JQuery-Mobile
HTML5+Native混合开发
逻辑和算法
数据结构与算法
C/C++,Swift,python,ruby,Objc
Runtime,Runloop
实用技术
Plist存储、NSCoding、SQLite、CoreData
音频、视频、流媒体、滤镜处理、拍照、相册、讯飞语音
推送、加速计、单元测试、静态库、第三方登录
AppExtensions、炫酷动画特效、地图定位
二维码、正则表达式、ipa打包和重签名,iTunesConnect发布
瀑布流、自定义UICollectionViewLayout
git、github、Cocoapods、Carthage、svn(建议放弃使用,CornerStone)
社交分享、应用统计、设备信息获取(内存、CPU、磁盘大小等硬件信息)
第三方支付集成、App内购、通讯录等
AppleWatch
Glance、Notification
iPhone App和Watch App通信
APP类型
新闻媒体类app
多媒体类app
电商类app
SNS类富媒体(对富媒体排版的高要求)app
工具类app
助手类app,包括越狱类
## 十个问题
你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了什么?你还能记得你所使用的相关的头文件或者某些方法的名称吗?
你实现过多线程的Core Data么?NSPersistentStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要在线程中创建或者传递?你是用什么样的策略来实现的?
Core开头的系列的内容。是否使用过CoreAnimation和CoreGraphics。UI框架和CA,CG框架的联系是什么?分别用CA和CG做过些什么动画或者图像上的内容。(有需要的话还可以涉及Quartz的一些内容)
是否使用过CoreText或者CoreImage等?如果使用过,请谈谈你使用CoreText或者CoreImage的体验。
NSNotification和KVO的区别和用法是什么?什么时候应该使用通知,什么时候应该使用KVO,它们的实现上有什么区别吗?如果用protocol和delegate(或者delegate的Array)来实现类似的功能可能吗?如果可能,会有什么潜在的问题?如果不能,为什么?(虽然protocol和delegate这种东西面试已经面烂了...)
你用过NSOperationQueue么?如果用过或者了解的话,你为什么要使用NSOperationQueue,实现了什么?请描述它和GCD的区别和类似的地方(提示:可以从两者的实现机制和适用范围来描述)。
既然提到GCD,那么问一下在使用GCD以及block时要注意些什么?它们两是一回事儿么?block在ARC中和传统的MRC中的行为和用法有没有什么区别,需要注意些什么?
您是否做过异步的网络处理和通讯方面的工作?如果有,能具体介绍一些实现策略么?
对于Objective-C,你认为它最大的优点和最大的不足是什么?对于不足之处,现在有没有可用的方法绕过这些不足来实现需求。如果可以的话,你有没有考虑或者实践过重新实现OC的一些功能,如果有,具体会如何做?
你实现过一个框架或者库以供别人使用么?如果有,请谈一谈构建框架或者库时候的经验;如果没有,请设想和设计框架的public的API,并指出大概需要如何做、需要注意一些什么方面,来使别人容易地使用你的框架。
## 参考资料
## 工具
##Notice
####关于白盒测试
可以具体了解AppleScript TODO
####Xcode使用技巧
Xcode常用的快捷键如下:
cmd + shift + o
快速查找类,可以快速跳到指定类的源码中
ctrl + 6
列出当前文件中的所有方法
cmd + 1
切换成Project Navigator
cmd + ctrl + up
在.h和.m文件之间切换
cmd + enter
切换成standard editor
cmd + opt + enter
切换成 assistant editor
cmd + shift + y
切换console View的现实或隐藏
cmd + 0
隐藏左边得导航区
cmd +opt + 0
隐藏右边的工具区
cmd + ctrl + Left/Right
到上/下一次编辑的位置
cmd + opt +j
跳转到文件过滤区
cmd + shift +F
** 在工程中查找**
cmd + R
运行
cmd + b
编译
cmd +shift + k
清空编译好的文件
cmd + .
结束本次调试
ESC
调出代码补全功能
cmd + t
新建一个tab栏
cmd + shift + [
在tab栏之间切换
cmd + 单击
查看该方法的实现
opt + 单击
查看该方法的实现
####为工程增加Daily Build
增加Daily Build的步骤和好处,这里有一篇详细文章
TODO
####管理代码片段
代码片段管理在Xcode整个界面的右下角,可以通过快捷键 cmd + opt + ctrl + 2
调出
2.代码片段管理如下图所示 :
这里是常用的代码片段管理代码片段
####GCD的深入使用
为了方便的使用GCD,苹果提供了一些方法方便我们将block放在主线程或后台线程执,
或者延后执行。主要由如下几种:
后台执行:
dispatch_async (dispatch_get_global_queue(0 ,0 ),^{
// something
});
主线程执行:
dispatch_async (dispatch_get_main_queue(),^{
// something
});
一次性执行:
static dispatch_once_t onceToken;
dispatch_once (&onceToken,^{
// code to be executed
});
延迟2秒执行:
double delayInseconds = 2 .0f ;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW,delayInseconds * NSEC_PER_SEC);
dispatch_after (popTime,dispatch_get_main_queue(),^(void ){
// code to be executed on the main queue after delay
})
dispatch_queue_t也可以自己定义,如果要定义queue,可以使用dispatch_queue_create方法,示例如下:
dispatch_queue_t urls_queue = dispatch_queue_create(" blog.ddapps.tolly" ,NULL );
dispatch_async (urls_queue,^{
// your code
});
dispatch_release (urls_queue);
GCD还有一些高级用法,例如让后台两个线程并行执行,然后等两个线程都结束后,再汇 总执行结果。这个可以用dispatch_group 、dispatch_group_async和dispatch_group_notify来实现,示例如下:
dispatch_group_t group = dispatch_group_create();
dispatch_group_async (group,dispatch_get_global_queue(0 ,0 ),^{
// 并行执行的线程一
});
dispatch_group_async (group,dispatch_get_globale_queue(0 ,0 ),^{
// 并行执行的线程二
});
dispatch_group_notify (group,dispatch_get_global_queue(0 ,0 ),^{
// 汇总结果
})
####Ipa重新签名
####数据处理
####HighLevel复杂网络处理封装
####UITableView性能优化
####CoreText排版
DTCoreText源码解析1
DTCoreText步骤原理: 1.解析HTML生成DOM树 2.解析CSS,合并得到每个DOM节点对应的样式 3. 生成NSAttributeString
####相机照片处理相关
AVFoundation 和 GPUImage
####产品
原型设计工具
请发表评论