Xcode Debugging

变更记录

序号 | 录入时间 | 备注
— | — | — | —
1 | 2017-06-03 | 新建文章
2 | 2018-02-28 | 更新引言
2 | 2018-04-14 | 整理格式

引言

你的代码,或者任何人的代码中总会有bug存在,你可以把调试看做是更好地理解代码的一种方式 —— By Advanced_Apple_Debugging_&_Reverse_Engineering_v0.9.5

The Debugging Process

  1. Reproduce the problem

    if you cannot reproduce the problem, then you (probably) do not understand it.

  2. Gather Debug Information

    Logs, program, state,…
    What is the value of a variable?
    What kind of error?(ex.EXC_BAD_ACCESS)
    What line of code caused the error?
    Which functions or methods led to the error?

  3. Form a Hypothesis

  4. Try a fix

    Maximize the information gained per fix!

阅读更多
如何阅读一本书

读书方法

不会读书 会读书
选书
购书
【对书没有形成意识】
别人推荐什么读什么
没有目的性的读书
被广告和销量排行榜左右
【搜集信息制作购书清单,按清单购买书】
发现并按照自己的需求选书
读书目的很明确
能排除干扰而不是被动选书
有效利用各种信息定制自己需要的书单
读书 【随意读读】
读书没有重点,需要很长时间
读书过程容易变得单调范围
读过以后很难提炼要点
【以记录读书笔记和创造价值的概念读书】
目的明确,速度更快
读的过程做记号,读完做笔记,印象深刻
读完后能够迅速提炼要点
记录 【仅仅是读过】
没有记录回顾
不记得曾经读过
无法回忆内容
【拥有扎实有价值的个人笔记】
提炼书中要点
记录个人感受
对书中价值点印象深刻
以书为媒介丰富思想
活用 【书在书架上】
难以进行参考
书被遗忘在角落
浪费了时间、空间、金钱
【回顾读书笔记】
便于参考
可以脱离原书
通过读书笔记吸取知识便于实践和提升

康奈尔笔记法

阅读更多
UML类图与类的关系详解

在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。

UML工具选择

之前有收集一个导图工具processon,感觉做导图不错,还有社区分享,但是不适合做类的UML图吧,参考了
UML相关工具一览(截止2017年3月),Astah有哪些值得推荐的 Mac 下的 UML 工具?,感觉 Astah 网站教程不错,工具演示视频一下让我心动了,我觉得我找的就是这种工具。

阅读更多
建站日志

博客-建站日志

变更记录

序号 | 录入时间 | 备注
— | — | — | —
1 | 2017-05-03 | 新建文章
2 | 2018-02-28 | 整理博客问题,添加问题8
3 | 2019-01-26 | 更换博客图床,add HTTPS认证
4 | 2019-01-27 | 更换DNS解析到Cloudflare
5 | 2019-07-20 | 恢复本地搜索

TODO

  • 整理,优化文章level2

  • 文章底部添加推荐和最新评论

  • 推广-SEO优化

  • CDN解析加速

  • 添加文章版权

阅读更多
Linux命令学习

Linux命令学习

时间 备注
2017-05-01 start
2018-04-30 添加文件重命名
2018-06-20 整理 & 添加补充grep命令
2018-07-05 整理 & 添加powerline

记录小白学习Linux的过程。

zsh配合iterm2效果.png

常用命令

man命令

常用工具命令 man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。
语法 man(选项)(参数)
-a:在所有的man帮助手册中搜索;
-f:等价于whatis指令,显示给定关键字的简短描述信息;
-P:指定内容时使用分页程序;
-M:指定man手册搜索的路径。
来自: man命令_Linux man 命令用法详解

  • 不区分大小写智能提示。我是不喜欢大小写区分的那种人,所以用了 zsh 之后,经常按 Tab 进行提示。
    此外按下 tab 键显示出所有待选项后,再按一次 tab 键,即进入选择模式,进入选择模式后,按 tab 切向下一个选项,按 shift + tab 键切向上一个选项,ctrl+f/b/n/p 可以向前后左右切换。
阅读更多
关注眼睛健康——《养眼就是养精神》读书笔记

今野式视力恢复训练法

近视是无法忽视的眼科第一疾病

90%以上的近视与遗传五官

上海现代人眼睛的罪魁祸首: 蓝光

行动!把锻炼拓展到眼睛


TableView系列--优化

优化UITabelView

内建方法

  1. 首先是重用cell/header/footer的单个实例,即便是我们需要显示多个。这是优化UIScrollView(UITableView的父类)最明显的方式,UIScrollView是由苹果的工程师提供的。为了正确的使用它,你应该只有cell/header/footer类,一次性初始化它们,并返回给UITableView。

但重要的事情是:在UITableView的dataSource中实现的tableView:cellForRowAtIndexPath:方法,需要为每个cell调用一次,它应该快速执行。所以你需要尽可能快地返回重用cell实例。

不要在这里去执行数据绑定,因为目前在屏幕上还没有cell。为了执行数据绑定,可以在UITableView的delegate方法tableView:willDisplayCell:forRowAtIndexPath:中进行。这个方法在显示cell之前会被调用。

但是UITableView的问题在哪?正如所解释的一样,UITableView不会同时维护所有cell的实例。相反,它只需要维护显示给用户的那些cell。

那么,UITableView是如何知道它的contentSize呢?它是通过计算所以cell的高度之和来计算contentSize的值。

UITableView的delegate方法tableView:heightForRowAtIndexPath:会为每个cell调用一次,所以你应该非常快地返回高度值。

很多人会犯一个错误,他们会在布局初始化cell实例并绑定数据后去获取它们的高度。如果你想优化滑动的性能,就不应该以这种方式来计算cell的高度,因为这事难以置信的低效,iOS设备标准的60 FPS将会降低到15-20 FPS,滑动会变得很慢。

阅读更多
Hybrid Developing

在Hybrid开发模式中,是将Native和Html5的优势混合起来,然而在同一环境中可以顺畅无缝的跑起来,还待解决。

Hybrid App

讲述 Hybrid App ,要先了解 Native AppWeb App 的定义。 Native App 是指针对不同的手机操作系统要采用不同的语言和框架进行开发,例如Java(Android), Objective-C(iOS)等; Web App 即是 HTML5 APP 框架开发模式,使用HTML5,CSS3以及JavaScript以及服务器端语言来完成开发, Web App 具有跨平台的优势。根据定义显而易见得出两种开发模式的优劣势, Native App 可以利用系统的所有特性,因此做出杰出的性能,然而每次功能升级都必须重新打包、审核再上架,平均浪费近两周的时间。而反观 Web App 就没有这样的问题,其缺点在于Web语言无法访问很多系统特性,性能不高。

Native App

阅读更多
习惯伴随终生

fair enough,这世界上本来就只有那一小部分人才能享受世界上最精彩的人生,如果你做不到,无可厚非,并没有什么关系。当然你在选择享受最精彩的人生同时也要承受本应有的孤独与坚持~

一些让生活变得简洁高效的 ^ ^

直接干货(小习惯+小冷门):习惯一旦养成,受益终生

今天不想跑,所以才去跑,这才是长距离跑者的思维方式。

阅读更多
ToDo

Plan

制定详细的计划任务目标

  1. 工作计划

  2. 学习计划

  3. 健身计划

  4. 交友计划

数据——采集、整理、分析、总结、完善

  1. 采集数据(Working Time、BodyBuild Time、Body Data、)

  2. 整理记录,使用Excel表格,MindNode等整理,并分析跟踪。

  3. 根据报表,分析情况,解决完善问题。

阅读更多