关于学习YYKit的记录
<1>遇到的问题
<1>使用@[].mutableCopy创建可变数组
代码出处:YYKitDemo-> YYRootViewController
源代码:self.titles = @[].mutableCopy
代码解读:
出处:https://github.com/objc-zen/objc-zen-book
The following should be avoided:
NSMutableArray *aMutableArray = [@[] mutableCopy];
The problems with the previous notation are both of efficiency and readability. On the efficiency side, an unnecessarily immutable object is created and immediately thrown away; this unlikely will slow down your app (unless the method here is called frequently) but there is really no reason to do this just to save some characters. Regarding the readability, we can see two problems here: the first is that when scanning through the code and seeing @[] your mind is immediately connected to and instance of NSArray, but in this case you need to stop and check more thoughtfully. Another aspect to take into account is that it would be very likely that someone with less experience will see your code and depending on his background he might not be very comfortable with the dichotomy between mutable and immutable objects. He or she could not be very familiar with the meaning of creating a mutable copy (obviously we are not suggesting that this knowledge is not necessary). Again, this is not something absolutely wrong but is more about code usability (that includes readability).
译文:与先前的语法比较,在效率可可读性上存在问题,在效率方面,一个不必要的不可变对象被创建并且立即释放,它们未必将减慢你的APP(除非这个方法在这里被频繁调用)但是它真的没有必要这样做仅仅是为了保存一些字符;关于可读性方面,我们会看到2个问题,第一个是当浏览代码看到@[]时,你的想法立刻被链接到一个NSArray实例,但是,假若这样你需要停下来检查的更加周到,另一个可以说服你的原因是,可能一个经验非常少的程序员看到你的代码,并且依靠他的背景知识,可能不是非常熟悉,并且会对可变和不可变对象产生歧义,她可能不是很熟悉这个创建mutable copy的语法(明显的我们不认为这个知识点不重要)相反,它不是完全错误的做法,但是更多的是关于这个代码的可用性(包括可读性)
<2>关于 - (void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated; 的使用
在导航+UITableView同时使用时,选中一个cell,push到下一个ViewController,此时如果back回来,当前的cell依然是选中的状态,解决方法就是使用deselectRowAtIndexPath方法取消选中,我们可能疑惑为什么有的时候不加这句控制器pop回来后选中状态也会消失,原因是因为如果UITableView是在UITableViewController中时,iOS SDK为我们进行了优化,所以可以不必使用deselectRowAtIndexPath方法取消选中状态,但是在在UIViewController中我们一定要使用deselectRowAtIndexPath取消选中状态
如果对项目要求高,一种更理想的方法是
- (void) viewWillAppear: (BOOL)inAnimated {
NSIndexPath *selected = [self.tableView indexPathForSelectedRow];
if(selected) [self.tableView deselectRowAtIndexPath:selected animated:YES];
}
如果这么处理,那么在pop回来的时候,可以提示刚才点进去的是哪一行,在UITableViewController中默认的也是这种效果.
<3>
关于学习YYKit的记录的更多相关文章
- Java学习-007-Log4J 日志记录配置文件详解及实例源代码
此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...
- UWP学习开发笔记记录(开篇)
零零散散开发微软移动2年多了,基本上从未记录或写过任何笔记.所以打算写一些自己的心得和技术的分享,大家一起来共同探讨.虽然现在UWP的工作几乎没有了,但是我感觉大家都是在观望,再看接下来微软的动作,所 ...
- Python模块学习 ---- logging 日志记录
许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪.在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4cp ...
- Opengl_入门学习分享和记录_00
2019.7.4 本着对游戏创作的热情,本人初步了解了一部分的unity引擎的使用,也学习了一点C#可是越学习unity我就反而对引擎内部感兴趣(不知道有没有一样的朋友=,=). 接着了解到了open ...
- 当时学习《鸟哥的Linux私房菜-基础学习篇》记录的点
1.当执行一个指令的时候,举例来说[ls],系统会依照PATH的设定去每个PATH定义的目录下搜寻文件名为ls的可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先搜寻到的同 ...
- 优秀编程学习网站&博文记录
记录优秀讲解知识点博客内容,侵删! 编程者学习网站 LearnKu终身编程者的知识社区 自动化测试内容 Python 接口自动化测试 应用开源接口网站:https://httpbin.org/#/St ...
- mybatis 学习视频总结记录
学习mybaits简单增删改查例子记录 此整理是学习视频后的视频内容整理,后半段还没有整理 网易云课堂 SSM高级整合视频 地址 : http://study.163.com/course/cours ...
- SpringBoot学习(学习过程记录)
关于微服务和SOA 这,仅是我学习过程中记录的笔记.确定了一个待研究的主题,对这个主题进行全方面的剖析.笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长.不止是技术. 官网教程学习ht ...
- Kafka学习(学习过程记录)
Apache kafka 这,仅是我学习过程中记录的笔记.确定了一个待研究的主题,对这个主题进行全方面的剖析.笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长.不止是技术. Kafka ...
随机推荐
- foreach DataTable或Table时要略过第一行。
昨天有续写一个练习<输入数字动态创建行(二)>http://www.cnblogs.com/insus/p/4916260.html ,最终是需要把数据存入数据库中. 在循环ASP:Tab ...
- js带上框架和防止被iframe的代码
1.永远都会带着框架<script language="JavaScript"><!--if (window == top)top.location.href = ...
- Android经典完美退出方法
Android经典完美退出方法,使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activit ...
- C#使用Process调用批处理阻塞问题
PS:又见到熟悉的C#代码了,好开心,哈哈哈.这次又跳坑了,好不容易才爬起来. 公司有自己开发的一套Submit.Compile.Publish的生命周期系统. 在Compile时,需要调用外部的 ...
- Android短信Notification的几个ID
private static final int NOTIFICATION_ID = 123; public static final int MESSAGE_FAILED_NOTIFICATION_ ...
- hibernate----N-1(一)
*************************hibernate.cfg.xml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE ...
- [译]WebVR技术方案草案
注:基于官方的.bs规范专用格式进行了翻译,但结果发现无法编译成html格式,所幸基本兼容.markdown格式. 中文翻译项目地址:https://github.com/web3d/webvr-sp ...
- Scalaz(41)- Free :IO Monad-Free特定版本的FP语法
我们不断地重申FP强调代码无副作用,这样才能实现编程纯代码.像通过键盘显示器进行交流.读写文件.数据库等这些IO操作都会产生副作用.那么我们是不是为了实现纯代码而放弃IO操作呢?没有IO的程序就是一段 ...
- Photoshop如何实现UI自动切图?
切图严格来说并不是UI设计师的工作, 而是前端工程师的工作,指的是将UI设计师的设计(大部分为photoshop创建的PSD文件)转化为界面(网页或窗体等)所需要资源的过程.切图是衔接UI设计和应用程 ...
- javascript通用事件封装
随着最近几年Html5的兴起,越来越多的应用采用html5进行实现,一个优秀的网页应用不但需要美观简洁的UI界面,更需要一个良好的交互.网页应用大部分的交互需要用javascript事件进行实现.虽然 ...