简书2:我对iOS的认识

2017-03-21  本文已影响0人  刚刚下课

这篇文章距离第一篇时间有很长,一是准备好好想想怎么正式开篇,二确实是忘了(哈哈)下面进入正题,简单谈谈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

未完待续~~

上一篇 下一篇

猜你喜欢

热点阅读