OC基础
王建文
这个作者很懒,什么都没留下…
展开
-
iOS - 类扩展与分类的区别
引用自此处类扩展 (Class Extension也有人称为匿名分类)作用: 能为某个类附加额外的属性,成员变量,方法声明 一般的类扩展写到.m文件中 一般的私有属性写到类扩展 使用格式 @interface Mitchell() //属性 //方法 @end与分类的区别 分类的小括号中必须有名字 @interface 类名(分类名字转载 2016-07-16 20:33:32 · 428 阅读 · 0 评论 -
iOS开发--NSDate与NSDateFormatter的相关用法【转】
原文地址:http://blog.sina.com.cn/s/blog_91ff71c0010188u9.html1.NSDateFormatter配合NSDate与NSString之间的转化 NSDateFormatter有下面2个方法: - (NSString *)stringFromDate:(NSDate *)date;//NSDate转NSString - (NSDate *)转载 2016-07-21 11:01:52 · 443 阅读 · 0 评论 -
self.XX点语法/队列和栈的区别/堆区与栈区的区别
一 self.XX点语法1.传统的setter,getter方法 -(void)setAge:(int)age{ _age = age; }-(int)age{ return _age; }2.点语法点语法的本质是(set/get)方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开成相应的方法。 切记点语法的本质是转换成相应的set和get方法,如果没有set和get原创 2016-09-02 09:26:07 · 489 阅读 · 0 评论 -
block为什么要用Copy修饰
block用copy修饰其实就是把栈区的block转移到堆区。 因为栈区的内存由编译器自动管理,且栈区存储的是局部变量和临时变量,变量出了作用域就会释放,这种情况下block一旦被释放,我们再去调用block就会出现野指针错误,程序会崩溃。 而把block转移到堆区之后,内存由我们来管理,block就不会轻易被释放掉了。原创 2016-09-02 10:42:32 · 957 阅读 · 0 评论 -
block和代理的区别和联系
一 相同点: 都能用来传值,并且都是在某个特定的时间点后,来执行代理或是block里面的代码。比如:我们一般在做完具体下载操作之后(耗时间操作之后),通过block告诉调用者,我已经下载完毕了,接下来,你可以到UI上进行播放了;或是点击了下一个控制器上面的按钮的之后,通过代理来将修改的值传回给上一个控制器的UITableView上显示。 都可能导致循环引用。 代理一定要记住定义代理属性的那原创 2016-08-24 16:02:33 · 1292 阅读 · 0 评论 -
block的weak-strong dance
使用block,出现的主要问题就是循环引用,进而导致内存泄露。 而解决block的循环引用,有两种方法,一种是是将block内部引用的外部对象用weak修饰,另外一种方法是将指针手动置为nil。然而使用weak修饰外部变量的方法在某些情况下,一旦block内部由于变量由weak修饰导致其内存被释放,在block内部再次使用该对象时由于其已经为nil,所以无法正常调用。这个时候就可以使用weak-s原创 2016-09-16 21:38:46 · 507 阅读 · 0 评论 -
block的函数式编程和链式编程
一 block的函数式编程和链式编程定义及实例1.定义函数式编程:它属于”结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。代表:ReactiveCocoa。链式编程:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。a(1).b(2).c(3)2.Masonry框架内包含有丰富的函数式编程和链式编程思想 示例:- (void)masonryDmeo原创 2016-09-17 00:26:22 · 562 阅读 · 0 评论 -
UIView和CALayer的区别
1.首先UIView可以响应事件,CALayer不可以。 UIKit使用UIResponder作为响应对象,来响应系统传递过来的事件并进行处理。UIApplication、UIViewController、UIView、和所有从UIView派生出来的UIKit类(包括UIWindow)都直接或间接地继承自UIResponder类。 2.CALayer直接继承 NSObject,并没有相应的处理事件的原创 2016-08-27 00:04:50 · 758 阅读 · 0 评论