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.

 
今天早上在整理代码的时候发现了如上警告。
 
在网上查询后发现,是因为苹果在新的编码,不推荐变量以new、copy等关键字开头。
 
突然响起来之前也有朋友问过类似的问题。特做以记录。
 
也希望大家在以后编码的时候,能够多多注意。

IOS- 02 零碎知识总结的更多相关文章

  1. iOS中多线程知识总结(一)

    这一段开发中一直在处理iOS多线程的问题,但是感觉知识太散了,所以就把iOS中多线程的知识点总结了一下. 1.基本概念 1)什么是进程?进程的特性是什么? 进程是指在系统中正在运行的一个应用程序.   ...

  2. 【Python】 零碎知识积累 II

    [Python] 零碎知识积累 II ■ 函数的参数默认值在函数定义时确定并保存在内存中,调用函数时不会在内存中新开辟一块空间然后用参数默认值重新赋值,而是单纯地引用这个参数原来的地址.这就带来了一个 ...

  3. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  4. iOS网络相关知识总结

    iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...

  5. iOS网络基础知识

    iOS网络基础知识 1.一次HTTP请求的完整过程 (1)浏览器或应用发起Http请求,请求包含Http请求Http(请求),地址(url),协议(Http1.1)请求为头部 (2)web服务器接收到 ...

  6. iOS底层基础知识-文件目录结构

    一:iOS沙盒知识 出于安全考虑,iOS系统把每个应用以及数据都放到一个沙盒(sandbox)里面,应用只能访问自己沙盒目录里面的文件.网络资源等(也有例外,比如系统通讯录.照相机.照片等能在用户授权 ...

  7. iOS开发——总结篇&IOS开发基础知识

    IOS开发基础知识 1:Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id) 对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断 ...

  8. 【Python】 零碎知识积累 I

    大概也是出于初高中时学化学,积累各种反应和物质的习惯,还有大学学各种外语时一看见不认识的词就马上记下来的习惯,形成了一种能记一点是一点的零碎知识记录的癖好.这篇文章就是专门拿来记录这些零碎知识的,没事 ...

  9. IOS开发基础知识--碎片51

    1:https关闭证书跟域名的验证 AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy]; securityPolic ...

  10. IOS开发基础知识--碎片7

    三十八:各个版本IPHONE分辨率及图片的实现原理 desert@2x : iPhone 4s ( x ) desert-568h@2x : iPhones , 5C and 5S ( x ) des ...

随机推荐

  1. SQL 语句-partition by

    /****** ******/ 初始化数据 create table employee (empid int ,deptid int ,salary decimal(10,2)) insert int ...

  2. Javascript软键盘设计

    国内大多数网站的密码在网络传输过程中都是明文的,我们目前正在做的产品也是这样的情形,这正常吗? 大家都偷懒?不重视安全?各人持有观点,有人认为明文传输并不是想象中的那么可怕,事实上正常情况下这些报文你 ...

  3. button 按钮

    <!DOCTYPE html> <html> <body> <h1>我的第一段 JavaScript</h1> <p> Java ...

  4. ubutu安装搜狗

    1.下载deb文件 下载32位 wget "http://pinyin.sogou.com/linux/download.php?f=linux&bit=32" -O &q ...

  5. MySQL中的运算符

    一.算法运算符: (A) 除法运算和模运算中,如果除数为0,非法,返回结果为NULL. 二.比较运算符: (A) 比较结果不确定是返回NULL. (B) 比较运算符可以用于比较数字.字符串和表达式.数 ...

  6. 简单易懂的crontab设置工具集

    导读 在上一篇文章中,我介绍了crontab的配置文件以及如何设置定时任务,对于偶尔用一次crontab的同学而言,可能遗忘配置语法会很快,这里我向大家推荐几个在线设置crontab任务的网站. ge ...

  7. 跟着百度学PHP[4]-OOP面对对象编程-1-什么是面对对象编程

    该阶段学习参考:http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/09/10/1823042.html 面向对象编程(Object Orie ...

  8. hihoCoder 1303 数论六·模线性方程组

    Description 求解模线性方程组, \(m_i\) 不互质. Sol 扩展欧几里得+中国剩余定理. 首先两两合并跟上篇博文一样. 每次通解就是每次增加两个数的最小公倍数,这对取模任意一个数都是 ...

  9. Apache 配置参考

    1.什么是Apache ? Apache,是一种开放源码的HTTP服务器,可以在大多数操作系统中运行,由于其多平台和安全性所以被广泛使用,是目前最流行的Web服务器软件之一.Apache 起初由 Il ...

  10. Github GUI 托管代码教程

    附录:克隆仓库到本地:git clone https://github.com/chzeze/WeiboHomeCrawl.git