ios开发学习笔记一


** 简介:**本人是一个iOS开发菜鸟,之前很是懒惰,以后希望以此来激励自己,每天对掌握的新知识点进行记录,激励自己也想分享一下!不怕错,更不怕批!只为自己好好的学习留下点努力的痕迹! ### 知识点一:enumerateObjectsUsingBlock,for - in, ForLoop, enumerateObjectsWithOptions等直接的比较   方法 ### 知识点二:在项目中全局静态变量的写法 首先应该是在.h文件里面去声明外部变量:extern 类型 *const 变量名,注意const在星号的后面意思是修饰指针为指针常量不可变。如果放在了星号前面的话,就表示内容不可变。用于本 ### 知识点三:ReactiveCocoa 参考文献地址:http://blog.devtang.com/2014/02/11/reactivecocoa-introduction/ ### 知识点四:iOS开发中的消息的传递机制 参考文献地址:http://beyondvincent.com/2013/12/14/2013-12-10-124-communication-patterns/ ### 知识点五:layoutSubviews

知识点六:bounds和frame

参考链接:文章地址 我看网上介绍比较好的就这个了,但是不知道为 ### 知识点七 Masonry 中 mas_equalTo和equalTo的区别 其实 mas_equalTo是一个MACRO,比较的是值,equalTo比较的是view。

// 只要添加了这个宏,就不用带mas_前缀
2 #define MAS_SHORTHAND
3 // 只要添加了这个宏,equalTo就等价于mas_equalTo
4 #define MAS_SHORTHAND_GLOBALS
5 // 这个头文件一定要放在上面两个宏的后面
6 #import "Masonry.h"

知识点八 3D Touch

第一个是3D Touch的实现 第二个是因为APP适配到iOS7 所以不能调用以iOS9的API,所以要考虑到这一点,可以用NSStringFromClass来获取iOS9 API中的方法,如果系统是iOS7的话是不会有该方法的会返回nil 的。 ### 知识点九 iOS Foundation框架学习

数组和字典中只能存储对象类型 在ObjC中我们一般将基本数据类型装箱成NSNumber类型(当然它也是NSObject的子类,但是NSNumber不能对结构体装箱),调用其对应的方法进行转换:

+(NSNumber *)numberWithChar:(char)value;

+(NSNumber *)numberWithInt:(int)value;

+(NSNumber *)numberWithFloat:(float)value;

+(NSNumber *)numberWithDouble:(double)value;

+(NSNumber *)numberWithBool:(BOOL)value;

+(NSNumber *)numberWithInteger:(NSInteger)value;

上面我们看到了基本数据类型的装箱和拆箱过程,那么结构体呢?这个时候我们需要引入另外一个类型NSValue,其实上面的NSNumber就是NSValue的子类,它包装了一些基本数据类型的常用装箱、拆箱方法,当要对结构体进行装箱、拆箱操作我们需要使用NSValue,NSValue可以对任何数据类型进行装箱、拆箱操作。

事实上对于常用的结构体Foundation已经为我们提供好了具体的装箱方法:

+(NSValue *)valueWithPoint:(NSPoint)point;

+(NSValue *)valueWithSize:(NSSize)size;

+(NSValue *)valueWithRect:(NSRect)rect;

对应的拆箱方法:

-(NSPoint)pointValue;

-(NSSize)sizeValue;

-(NSRect)rectValue;

那么如果是我们自定义的结构体类型呢,这个时候我们需要使用NSValue如下方法进行装箱:

+(NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type;

调用下面的方法进行拆箱:

-(void)getValue:(void *)value; ### 知识点十 WKWebView的title修改或者是不更新title 使用KVO来监听WKWebView的title的属性 比如title