IOS- 02 零碎知识总结
1.UIView,UIViewController,UIWindow和CALayer
UIView是什么,做什么:UIView是用来显示内容的,可以处理用户事件
CALayer是什么,做什么:CALayer是用来绘制内容的,对内容进行动画处理依赖与UIView来进行显示,不能处理用户事件。
为何有两套结构
并不是两套体系,UIView和CALayer是相互依赖的关系。UIView依赖与calayer提供的内容,CALayer依赖uivew提供的容器来显示绘制的内容。归根到底CALayer是这一切的基础,如果没有CALayer,UIView自身也不会存在,UIView是一个特殊的CALayer实现,添加了响应事件的能力
结论:
UIView来自CALayer,高于CALayer,是CALayer高层实现与封装。UIView的所有特性来源于CALayer支持。
- 在iPhone开发中,一个应 用程序应该只有一个UIWindow的 实例,UIWindow在iPhone中是UIView的一个特殊子类,在程序初始化时,通过装载 MainWindow.xib或者在代码中创建,它的大小应该就是手机屏幕的大小,并且不应该像普通的UIView一样,设置UIWindow实例——一 个特殊的UIView实例——的UIView中的属性。
- 一个UIView的实例就是一个视图,表示的是屏幕上的一块矩形区域,负责这块矩形区域的描绘以及和用户的交互。一个UIView的实例也可以管理若干个子UIView,这和Windows编程中HWND句柄所指向的窗口的概念是类似的。
- 一个 UIViewController 的实例往往对应一组UIView,这一组UIView的特征是充满一整个屏幕,并且同时出现同时消失,也可以认为一个 UIViewController对应的是一个屏幕的界面,来管理这个屏幕的界面的数据,以及这个屏幕的界面所需要做出的对某些事件的相应,如一个屏幕的 出现,消失,甚至是屏幕方向的变化等等。一个UIViewController的实例必然对应至少一个UIView实例,而这个UIView的实例应该是 一个全屏的视图对象
2.同步请求和异步请求的细节
// 建立网络访问
NSURL *url = [NSURL URLWithString:@"127.0.0.1"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 异步请求(sendAsynchronousRequest类方法,本身会开启一条新的线程,执行网络请求。不会让程序暂停)
sendAsynchronousRequest类方法,本身会开启一条新的线程,执行网络请求。
// 参数queue(操作队列)用于指定网络请求结束后的处理程序执行所在的线程
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
// 块代码中的程序会在参数queue指定的操作队列中执行
NSLog(@"下载完成 %@", [NSThread currentThread]);
}];
// 同步请求(sendSynchronousRequest不会开启新的线程,因此必须要网络请求完成之后,才会执行后续的代码)
sendSynchronousRequest不会开启新的线程,因此必须要网络请求完成之后,才会执行后续的代码
[ NSURLConnection sendSynchronousRequest:request returningResponse:<#(NSURLResponse *__autoreleasing *)#> error:<#(NSError *__autoreleasing *)#>];
// 使用同步异步的原则在于后续代码是否必须要使用到网络请求结束后的结果
3.property中属性retain,copy,assgin的含义分别是什么?有什么区别?
assign: 简单赋值,不更改索引计数  . [对基础数据类型 (NSInteger)和C数据类型(int, float, double, char,等)]
copy: 建立一个索引计数为1的对象,然后释放旧对象 . [对NSString]
retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 . [对其他NSObject和其子类]
4.isKindOfClass 和 isMemberOfClass 的区别
两者都能检测一个对象是否是某个类的成员, 两者之间的区别是:isKindOfClass不但可以用来确定一个对象是否是一个类的成员,也可以用来确定一个对象是否是派生自该类的类的成员 ,而isMemberOfClass做不到后一点。
比如classA派生自NSObject类,classA* x = [classA new];   [x isKindOfClass:[NSObject class]] 可以检查出x是否是NSObject派生类的成员,但isMemberOfClass做不到
设施随即色
CGFloat red = (CGFloat)random()/(CGFloat)RAND_MAX;
CGFloat green = (CGFloat)random()/(CGFloat)RAND_MAX;
CGFloat blue = (CGFloat)random()/(CGFloat)RAND_MAX;
cell.sideColor.backgroundColor = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
Property's synthesized getter follows Cocoa naming convention for returning.
IOS- 02 零碎知识总结的更多相关文章
- iOS中多线程知识总结(一)
		这一段开发中一直在处理iOS多线程的问题,但是感觉知识太散了,所以就把iOS中多线程的知识点总结了一下. 1.基本概念 1)什么是进程?进程的特性是什么? 进程是指在系统中正在运行的一个应用程序. ... 
- 【Python】 零碎知识积累 II
		[Python] 零碎知识积累 II ■ 函数的参数默认值在函数定义时确定并保存在内存中,调用函数时不会在内存中新开辟一块空间然后用参数默认值重新赋值,而是单纯地引用这个参数原来的地址.这就带来了一个 ... 
- IOS开发基础知识碎片-导航
		1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ... 
- iOS网络相关知识总结
		iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ... 
- iOS网络基础知识
		iOS网络基础知识 1.一次HTTP请求的完整过程 (1)浏览器或应用发起Http请求,请求包含Http请求Http(请求),地址(url),协议(Http1.1)请求为头部 (2)web服务器接收到 ... 
- iOS底层基础知识-文件目录结构
		一:iOS沙盒知识 出于安全考虑,iOS系统把每个应用以及数据都放到一个沙盒(sandbox)里面,应用只能访问自己沙盒目录里面的文件.网络资源等(也有例外,比如系统通讯录.照相机.照片等能在用户授权 ... 
- iOS开发——总结篇&IOS开发基础知识
		IOS开发基础知识 1:Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id) 对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断 ... 
- 【Python】 零碎知识积累 I
		大概也是出于初高中时学化学,积累各种反应和物质的习惯,还有大学学各种外语时一看见不认识的词就马上记下来的习惯,形成了一种能记一点是一点的零碎知识记录的癖好.这篇文章就是专门拿来记录这些零碎知识的,没事 ... 
- IOS开发基础知识--碎片51
		1:https关闭证书跟域名的验证 AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy]; securityPolic ... 
- IOS开发基础知识--碎片7
		三十八:各个版本IPHONE分辨率及图片的实现原理 desert@2x : iPhone 4s ( x ) desert-568h@2x : iPhones , 5C and 5S ( x ) des ... 
随机推荐
- CATransition-转场动画
			CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果.iOS比Mac OS X的转场动画效果少一点 UINavigationController就是通过CATrans ... 
- Ubuntu  12 修改当前用户密码:new password is too simple
			修改当前登录用户的密码,通常使用如下命令: $ passwd Old password:****** New password:******* Re-enter new password:****** ... 
- HomeWork2
			程序一: 1 public intfindLast(int[] x, inty) { 2 //Effects: If x==null throw NullPointerException 3 // e ... 
- php 通过curl post发送json数据实例
			例1 代码如下 复制代码 $data = array("name" => "Hagrid", "age" => "3 ... 
- 一起入门python5之for循环
			昨天中午本来写了的,结果手贱了一下ctrl+x以后又去复制了别的东西.结果所有写的都没有了.蛋疼.继续写吧.今天来说for循环即条件判断>>> age = 20 #首先 ... 
- git  教程(12)--分支管理
			分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ... 
- spring mvc 传参数
			1.页面:(1)js传参数:location.href="${ctx }/forum/changeCtm.html?ctmId="+id; (2)将内容写在form表单里面,然后用 ... 
- Http Request
			function getSend($url,$param) { $ch = curl_init($url."?".$param); curl_setopt($ch,CURLOPT_ ... 
- 数据结构与算法实验题6.1 s_sin’s bonus byFZuer
			玩家从n 个点n-1 条边的图,从节点1 丢下一个小球,小球将由于重力作用向下落,而从小球所在点延伸出的每一条边有一个值pi 为小球通过该条边的概率(注意从同一个节点向下延伸的所有边的pi 的和可以小 ... 
- JSONP跨域的原理解析
			JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为“Same- Origin Policy”(同源策略).这一策略对于Jav ... 
