只是我的日常学习助手,大家不要抱有期待了.
工具及辅助技能
一个IOS工程师博客
http://daiweilai.github.io/2015/11/17/iOS%E5%BA%94%E7%94%A8%E5%8F%91%E5%B8%83%E4%B8%AD%E7%9A%84%E4%B8%80%E4%BA%9B%E7%BB%86%E8%8A%82/
- 英语学习
简明逻辑学导论 编程英语
freeCodeCamp(英语)
休息
合理的休息才能高效学习,每4个小时就需要休息调整.
http://ruziniu0510.blog.163.com/blog/static/8605017920143173290427/
慢就是快.
ADD/ADHD 正念冥想
小知识
可以做个core animation框架 自动动画.让所有UI1100 控件由程序员手动移动,模拟动画呈现过程,并设置几个连接方式,震动,排队,跳跃.....也可以由自定义(根据物理定律)
在用户各种操作中添加声音,动画.让软件活起来.(关键:动画的方式,以及不影响客户正常操作.保证持久性,不厌烦,个性化)
(小码哥官方视频)
http://www.520it.com/f/list-5e4e600be03f447194a6af100360bec1.html
单例小作用:
我们需要创建一个字典。用来保存当前存在的下载。使单例持有它,从而不会被销毁
WebView (一次加载所有图片)
WKWebView(解决图片内存的问题,IOS8.0以上)
自定义初始化方法需要initWith开头(大小写敏感)
origin :view 的坐标 x , y , z
size : view的尺寸 width height
setvalue;
实际上self.shopData是方法调用,详细的方法是[self shopData], 一旦使用self.shopData 就导致自己调用自己的方法了
iOS的点语法,放等号右边就是调用getter,放左边就是调用setter
下划线访问的书成员变量,不调用getter方法,点语法才会调用getter方法。
--www.jianshu.com/p/b9551a761419
define kLogFuncAndLine NSLog(@"%s -- %d",FUNCTION,LINE)
可以查看该方法在第几行,是哪个方法走的.
压缩包需要用压缩软件打开,不然只会得到一些无用或(残缺)的文件.
当你需要模仿时,从github上下载源码
当你需要学习新知识时,谷歌
当你遇到bug时你需要去stackflow上查找.
原来解析JSON文件 叫做JSON的序列化.
json数据 ----> OC对象(反序列化)
OC对象 ----> json数据 (序列化)
序列化:主要是为了传输/存储方便,将要传输/存储的对象序列化为二进制的数据流,效率很高。
反序列化:在读取或者接收数据的时候,把数据转换成OC对象,便于使用。
http://my.oschina.net/aslanjia/blog/637476
//防崩
//由于plist文件是后台给我们的,而这些变量名与系统关键字重合,所以我们就要写下面这个程序来覆盖它的变量名.避开系统关键字
/*Given that an invocation of -setValue:forKey: would be unable to set the keyed value using its default mechanism, set the keyed value using some other mechanism. The default implementation of this method raises an NSUndefinedKeyException. You can override it to handle properties that are dynamically defined at run-time.
鉴于setvalue的调用:forKey:将无法使用其默认设置键值机制,设置键值使用一些其他的机制。该方法的默认实现提出了一个NSUndefinedKeyException。你可以覆盖它来处理在运行时动态地定义属性。
*/
/* if ([key isEqualToString:@"id"]) { //如果key值等于某个系统关键字
_ID = value ; //那么就用ID(自定义变量名)来覆盖这个值.
}*/
//key 在模型中找不到的key(字典中的) value 前面key在字典中对应的value
-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
if ([key isEqualToString:@"id"]) {
_ID = value;
}
if ([key isEqualToString:@"description"]) {
_descriptions = value;
}
}
写代码时,加[]和没加 自动提示的是两种代码.
如果报黄是一段代码报黄,那么可能是你写的两边代码类型不匹配.(如tableviewcell 类型,你只写到tableView)
JSPatch :
- 在JSPatch 中创建应用并获得appkey
- 导入框架,工程中添加appkey与JSPatch形成关联.
- 创建一个空项目 (iOS other --> empty)
- 在空项目中写入bug具体位置,并修改成正确代码(需要OC转成JS格式)
defineClass("文件名", {
viewDidLoad : function() { //文件名
self.super().viewDidLoad();
require('NSArray'); //修改的代码
var arr = ["1", "2", "3", "4"];
console.log(arr[3]);
}
})
- 修改完在JSPatch 中提交文件,之后程序运行会自动将 错误的代码替换成修改的代码.
资源类 : iOS推荐博客 http://www.cocoachina.com/ios/20150626/11348.html
http://blog.sina.com.cn/s/blog_4b55f6860101hi53.html
我们可以点击工程名 在右边的class Prefix 来为你的各个文件添加前缀
github阅读源码
阅读源码是提高编程能力的重要方法,但是别人的程序一般都很大,让人无从下手.我们需要遵循一定规律来理清工程逻辑,有顺序的阅读.
当需要整篇阅读的时候我们需要运用MVC的模式来看代码,将程序的几大功能块分成MVC模式,实现子功能又需要MVC模式,就如同字典转模型一样,一层层遍历.分成三块来看.好的代码需要遵循此原则.
可以学学架构,MVC模式就是架构的一种.
查看demo代码中放在Assets中图片方法.
【链接】iOS学习之解压Assets.car
http://www.jianshu.com/p/a5dd75102467