图片新闻 您的当前位置:主页 > 图片新闻 >
IOS变量的属性属性设置和含义汇总
2019-03-13 09:07
 
IOS变量的属性属性设置和含义汇总
最近,我对IOS属性有了全面的了解和总结。
IOS @property和@synthesize有助于轻松生成获取和建立对象的方法,以便完成对象的分配和访问。
但是,如果要动态设置对象的get和set方法,可以使用@property和@dynamic的组合。
对象访问方法属性包括各种属性的设置,例如原子和非原子,readwrite和readonly,hold,assign和copy,strong和weak等。
1。
原子而不是原子
Atomic是默认属性。这表明对象上的操作主要是多线程环境中的原子操作。这提供了多线程访问安全性。
要访问多个线程中的对象,您需要解锁访问权限然后将其解锁。这确保了不能同时对同一对象执行多个操作。
如果多个子进程不参与编程,则不建议使用原子,因为它比非原子资源消耗更多的系统资源。
Nonatomic表示对access元素的访问不是原子的。它不支持多线程访问安全性,但访问性能很高。
2
读写和只读
Readwrite是默认属性。也就是说,可以读取和写入对象,并生成相应的对象建立和检索方法。
只读意味着只能读取对象的值,并且只生成对象的getter方法。
3
存储,分配和复制。
维护是通过释放NSObject及其子类对象的旧值然后保存新值来增加对象的应用程序数。
此属性只能用于objective-c类型的对象,而不能用于CoreFoundation对象。
(保留会增加对象的引用计数,基本数据类型和CoreFoundation对象都没有引用计数。)将对象添加到数组时,引用计数会增加1。
- (Void)setOldValue:(NSString *)newValue{
是的(newValue!
=旧值){
[OldValuerelease];
oldValue =[newValueretain];
赋值是一个默认属性,只能用于基本数据类型(如CGFloat,NSInteger,Bool,int,代理对象等)。
此方法直接将值分配给对象,而不执行保持操作。
复制意味着重新创建计数为1的新对象,然后释放先前的值。
每个人都知道hold是指针的副本,而copy是内容的副本。
例如,NSString对象的地址是0x100,其内容是字符串。如果副本用于另一个NSString对象,则会生成另一个地址为0x110的对象,但内容仍然是一个字符串。
如果对另一个NSString对象使用hold,则对象的地址保持为0x100。但是,对象的数量是两个。
4
强弱
在ARC模式下,对象声明需要绑定强弱,以便于自动内存管理。
默认值为强类型。
强引用,默认属性以及保留实际上是相对概念和引用。
如果您有一个强大的引用来保存对象,则无法释放该对象。
实例变量和默认局部变量是强指针。
就像作业一样,它是一个弱的参考。弱引用与强引用相同,除了它们不确定对象的存在。
即使一个对象被无数引用维护,它仍然被擦除,并且它不是该对象的所有者,除非有实质的引用。
释放对象时,其值将自动设置为null。
弱指针主要用于父子关系,父亲有强烈的指针指向孩子,所以父亲是孩子的主人,但孩子应该使用弱指针来避免属性循环。?警告他的父亲。
一个典型的例子是委托模式,其中ViewController传递一个强指针(self)。
View)有一个UITableView,数据源和UITableView委托都是ViewController的弱指针。

 
上一篇:HK 416突击步枪在30多个国家得到认可和装备是否优
下一篇:18名儿童和张小泉是着名的厨房刀具。哪一个更便

腾讯分分彩