码迷,mamicode.com
首页 > 移动开发 > 详细

ios属性或者变量的前缀-杂记

时间:2018-03-10 22:09:50      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:并且   init   直接   上下   处理流程   write   基本   ati   声明   

static 关键字的作用: 

(1)函数体内 static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次, 

因此其值在下次调用时仍维持上次的值; 

(2)在模块内的 static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问; 

(3)在模块内的 static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明 

它的模块内; 

(4)在类中的 static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝; 

(5)在类中的 static 成员函数属于整个类所拥有,这个函数不接收 this 指针,因而只能访问类的static 成员变量。  


线程与进程的区别和联系? 

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。 

程和线程的主要差别在于它们是不同的操作系统资源管理方式。 进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程 之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于 一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

 

类工厂方法是什么 

类工厂方法的实现是为了向客户提供方便,它们将分配和初始化合在一个步骤中,返回被创建的对象,并 

进行自动释放处理。这些方法的形式是+ (type)className...(其中 className不包括任何前缀)。 

工厂方法可能不仅仅为了方便使用。它们不但可以将分配和初始化合在一起,还可以为初始化过程提供对 

象的分配信息。 

类工厂方法的另一个目的是使类(比如NSWorkspace)提供单件实例。虽然init...方法可以确认一 

个类在每次程序运行过程只存在一个实例,但它需要首先分配一个“生的”实例,然后还必须释放该实例。 

工厂方法则可以避免为可能没有用的对象盲目分配内存。

 

readwritereadonlyassignretaincopynonatomic属性的作用 

@property是一个属性访问声明,扩号内支持以下几个属性: 

1,getter=getterName,setter=setterName,设置setter与getter的方法名 

2,readwrite,readonly,设置可供访问级别 

2,assign,setter方法直接赋值,不进行任何retain操作,为了解决原类型与环循引用问题 

3,retain,setter方法对参数进行release旧值再retain新值,所有实现都是这个顺序(CC上有相关资料) 

4,copy,setter方法进行Copy操作,与retain处理流程一样,先旧值release,再Copy出新的对象,retainCount为1。这是为了减少对上下文的依赖而引入的机制。 

copy是在你不希望a和b共享一块内存时会使用到。a和b各自有自己的内存。

5,nonatomic,非原子性访问,不加同步,多线程并发访问会提高性能。注意,如果不加此属性,则默认是两个访问方法都为原子型事务访问。锁被加到所属对象实例级(我是这么理解的...)。

atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。在多线程环境下,原子操作是必要的,否则有可能引起错 误的结果。加了atomic,setter函数会变成下面这样:

ios属性或者变量的前缀-杂记

标签:并且   init   直接   上下   处理流程   write   基本   ati   声明   

原文地址:https://www.cnblogs.com/linusflow/p/8541728.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!