OC属性关键词的用法之间的区别

1.weak与assign的区别?

在MRC环境下 使用retain 修饰对象类型,使用assin实现基本数据类型。

在ARC环境下,strong相当于retain,weak相当于assign,但是weak只能修饰对象类型,而assign使用修饰基本数据类型。weak是一种弱引用。

assign是指针赋值,不对引用计数操作,使用之后如果没有置为nil,可能就会产生野指针;而weak一旦不进行使用后,永远不会使用了,就不会产生野指针!

2.strong与copy的区别?

在定义一个类property的时候,为property选择strong还是copy的时候需要特别注意,如果property是NSArray或是NSString及其子类的时候,最好选择copy属性修饰,为什么呢?这时为了防止赋值给它的可变数据,如果可变的数据发生了变化,那么该property也会发生变化。

(1) strong对应的setter方法,是将_property先release(_property release),然后将参数retain(property retain),最后是_property = property。

(2) copy对应的setter方法,是将_property先release(_property release),然后拷贝参数内容(property copy),创建一块新的内存地址,最后_property = property

3.多线程GCD的简述

GCD是iOS4.0推出的,主要针对多核cpu做了优化,是c语言的技术

GCD是将任务(block)添加到队列(串行/并行/全局/主队列)并且以同步/异步的方式执行任务的函数,任务的取出遵循队列FIFO原则:先进先出,后进后出

GCD提供了一些NSOperation不具备的功能

一次性执行:可以保证某一段代码在程序运行的过程中只被执行一次,一次性执行是线程安全的,在多线程环境下也是只执行一次,应用场景:设计单例模式

延迟执行:即实现等待多长时间后在哪个队列中执行什么代码块

调度组:监听一组异步任务执行结束之后,我们能够得到统一的通知,注意:在其调度组内的任务执行完毕后执行后面的“刷新主界面”与“玩完”之间的执行没有先后顺序

(2)NSOperation

NSOperation是iOS2.0推出的,iOS4.0之后重写了NSOperation

NSOperation将操作(异步任务)添加到队列(并发队列)就会执行制定操作的方法

NSOperation里提供的方便操作

最大并发数

队列的暂停/继续

取消队列中所有的操作

指定操作之间的依赖关系(GCD可以用同步实现,但是比较麻烦)

同步和异步决定了要不要开启新的线程(同步不开,异步开)

同步:在当前线程中执行任务,不具备开启新线程的能力

异步:在新线程中执行任务,具备开启新线程的能力

串行和并发决定了任务的执行方式

并发:多个任务并发(同时)执行

串行:一个任务执行完毕后,再执行下一个任务

当任务是异步的时候,队列决定了开启多少条线程

串行队列:只开启一条

并发队列:可以开启多条

主队列特点:主队列中的任务,只有主线程在空闲的时候才会调度任务执行

主队列又叫全局串行队列,程序启动的时候就创建了主队列,在使用的不需要创建,直接GET。主队列中的任务是要在主线程执行的。

主队列,异步任务

不开线程,同步执行

主队列,同步执行

程序执行不出来(死锁)

死锁的原因,当程序执行到下面这段代码的时候

主队列:如果主线程正在执行代码,就不调度任务

同步执行:如果第一个任务没有执行,就继续等待第一个任务执行完成,再执行下一个任务,此时互相等待,程序无法往下执行(死锁)

主队列和串行队列的区别

串行队列:必须等待一个任务执行完成,再调度另一个任务

主队列:以先进先出调度任务,如果主线程上有代码执行,主队列不会调度任务

主队列,同步执行 ->放入异步执行解决死锁

全局队列本质就是并发队列

全局队列和并发队列的区别

并发队列有名称,可以跟踪错误,全局队列没有

全局队列在ARC中不需要考虑释放内存,

并发队列在MRC中需要手动释放内存,因为并发队列是creat创建出来的 在MRC见到creat就要release,全局队列不需要release

一般我们使用全局队列,因为使用起来更加简单

《3.》综合比较其各自使用范围如下

性能1.GCD更接近底层,而NSOperationQueue则更高级抽象,所以GCD在追求性能的底层操作来说,是数度最快的。着取决于使用instruments进行代码性能分析,如果有必要的话

2,从异步操作之间的事务性,顺序性,依赖关系。GCD需要自己写更多的代码来实现,而NSOperaitonQueue已经内建了这些支持

3.如果异步操作的过程需要更多的被交互和UI呈现出来,NSOperationQueue会是一个更好的选择。底层代码中,任务之间不太互相依赖,而需要更高的并发能力,GCD 则更有优势!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容