这篇文章距离第一篇时间有很长,一是准备好好想想怎么正式开篇,二确实是忘了(哈哈)下面进入正题,简单谈谈ios之oc
Object-C是一门新兴的语言,于2013年大规模被中国开发者应用,我是在2014年开始接触ios由学长推荐,大家都知道学习一门新语言是非常难的,刚开始学的时候很无趣,还需要mac电脑,花费比较多。当时买的一台二手mac勉强够用,就这样真实开始踏入ios的道路上(主要还是挺说工资高~哈哈)。
下面写的距离上面已经有半年时间,看着挺幼稚,但是也没有删除的欲望就留着了,下面记录下最近的总结。以前看过别人的ios学习经验总结,感觉还不错,所以准备自己总结一下,其实就是照着敲一遍,顺便写点自己想说的话,加深印象。
一:简述你对UIView、UIVindow、CALayer的认识
UIView继承UIResponder:NSObject,所以他是可以响应事件的
UIVindow直接从NSObject继承,所以他不能相应事件
1:它们分别所属的框架不同
1、UIView是在/System/Library/Frameworks/UIKit.framework中定义的。属于UIkit.framework框架,负责渲染矩形区域的内容,为矩形区域添加动画,响应区域的触摸事件,布局,和管理一个或多个子视图 。
2、CALayer是在/System/Library/Frameworks/QuartzCore.framework定义的。而且CALayer作为一个低级的可以承载绘制内容的底层对象出现在该框架中。UIView与CALayer的最大区别在于UIView可以响应用户事件,而CALayer不可以。UIView侧重于对显示内容的管理,CALayer侧重于对内容的绘制。由此可见UIView确实是CALayer 的高级封装。
3、UIWindow:属于UIKit.framework框架,是一种特殊的UIView,通常在一个程序中只会有一个UIWindow,但可以手动创建多个UIWindow,同时加到程序里面。主要起到三个作用:(1)作为容器,包含App程序所要显示的所有视图(2)传递触摸消息到其他的UIView和其他对象(3)与UIViewController协同工作,方便完成设备方向旋转的支持
2:UIwindow是UIView的子类
UIwindow是UIView的子类,UIWindow的主要作用:一是提供一个区域来显示UIView,二是将事件(event)的分发给UIView,一个应用基本上只有一个UIWindow.iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了。一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow。即没有UIWindow,就看不见任何UI界面。
二:声明一个属性是,copy和strong的区别
简单来说,声明的对象 去操作不可变对象如NSarray,copy是浅拷贝引用计数+1,改变数组中的内容 对象也会改变
声明的对象 去操作可变对象如NSMutableArray copy是深拷贝 改变数组中的内容,,copy对象不会改变:http://www.jianshu.com/p/2c1cec65f5af
三:实例方法和类方法的区别与联系
实例方法就是 需要先对类实例化才能调用的方法,类方法是直接可以用类名调用的方法
四:setvalue 和setobject有什么区别
1, setObject:forkey:中value是不能够为nil的,不然会报错。setValue:forKey:中value能够为nil,但是当value为nil的时候,会自动调用removeObject:forKey方法
2, setValue:forKey:中key的参数只能够是NSString类型,而setObject:forKey:的可以是任何类型
注意:setObject:forKey:对象不能存放nil要与下面的这种情况区分:
1, [imageDictionarysetObject:[NSNullnull]forKey:indexNumber]; [NSNullnull]表示的是一个空对象,并不是nil,注意这点
2, setObject:forKey:中Key是NSNumber对象的时候,如下:[imageDictionarysetObject:objforKey:[NSNumber numberWithInt:10]];
注意:
上面说的区别是针对调用者是dictionary而言的。
setObject:forKey:方法NSMutabledictionary特有的,而
setValue:forKey:方法是KVC(键-值编码)的主要方法。
当 setValue:forKey:方法调用者是对象的时候:
setValue:forKey:方法是在NSObject对象中创建的,也就是说所有的oc对象都有这个方法,所以可以用于任何类。
比如使用:
SomeClass *someObj = [[SomeClass alloc] init];
[someObj setValue:self forKey:@"delegate"];
表示的意思是:对象someObj设置他的delegate属性的值为当前类,当然调用此方法的对象必须要有delegate属性才能设置,不然调用了也没效果: http://blog.csdn.net/itianyi/article/details/8661997
未完待续~~