nonatomic与atomic
nonatomic 非线程安全的,适合内存小的移动设备,内部不会加锁。
atomic 线程安全的,需要消耗大量的资源,内部会对setter方法加锁
开发中的建议:
1,所有的属性都声明为 nonatomic (如果不声明,默认是atomic)
2,尽量避免多线程抢夺同一资源
3,尽量将加锁,资源抢夺的业务逻辑交给服务端处理,减少移动客户端的压力。            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-07-02 15:38:58
                            
                                252阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            nonatomic  非原子性.  在多线程下不安全.但是目前我们写的大多数程序都是 单线程的.atomic       原子性       在多线程下安全.但是耗费的资源多.  其实就是 加锁. 比如在程序中有两个 对象 访问 同一块地方. 存在先后的问题. 一个对象先访问了一块内存.会加锁.另一个对象看到后 会等待 或者 使用别的内存地址.用完后 解锁. 然            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-12-09 14:53:51
                            
                                43阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。      a            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2014-10-21 22:20:31
                            
                                64阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            assign: 简单赋值,不更改索引计数copy: 建立一个索引计数为1的对象,然后释放旧对象retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1Copy其实是建立了一个相同的对象,而retain不是:比如一个NSString对象,地址为0×1111,内容为@”STR”Copy到另外一个NSString之 后,地址为0×2222,内容相同,新的对象            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                            精选
                                                        
                            2014-07-25 00:59:40
                            
                                383阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            摘要 atomic和nonatomic区别用来决定编译器生成的getter和setter是否为原子操 作。atomic提供多线程安全,是描述该变量是否支持多线程的同步访问,如果选择了atomic 那么就是说,系统会自动的创建lock锁,锁定变量。nonatomic禁止多线程,变量保护,提高性能。 a            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2016-09-09 17:53:00
                            
                                81阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            ===== 最后转载下关于@property(*)括号中的属性内容介绍 =====atomic: 原子操作(原子性是指事务的一个完整操作,操            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-09 06:20:09
                            
                                89阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            都是用于修饰@property声明的变量 assign:用于非oc对象类型,表示直接赋值(默认值) retain:用于mrc中,用于类属性中有oc对象的情况,表示先推断赋值的对象是否和实例对象变量的值相等。 若不相等则先retain在赋值。(即release旧值,retain新值,用于修饰对象) r            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2018-01-14 10:05:00
                            
                                78阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            atomic 设置成员变量的@property属性时,默认为atomic,提供多线程安全。 在多线程环境下,原子操作是必要的,否则有可能引起错误的结果。加了atomic,setter函数会变成下面这样: {lock} if (property != newValue) { [property rel            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2017-06-27 11:59:00
                            
                                166阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
             assign:指定setter方法用简单的赋值,这是默认操作。你可以对标量类型(如int)使用这个属性。你可以想象一个float,它不是一个对象,所以它不能retain、copy。
 
assign:简单赋值,不更改索引计数(Reference Counting).使用assign: 对基础数据类型 (NSInteger)和C数据类型(int, float,&n            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2011-08-30 11:46:06
                            
                                10000+阅读
                            
                                                                                    
                                1评论
                            
                                                 
                 
                
                             
         
            
            
            
             atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。
        atomic
                设置成员变量的@property属性时,默认为atomic,提供多线程安            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                            精选
                                                        
                            2012-09-20 13:53:12
                            
                                369阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。
        atomic
                设置成员变量的@property属性时,默认为atomic,提供多线程安            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                            精选
                                                        
                            2012-10-10 10:24:23
                            
                                496阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            assign:指定setter方法用简单的赋值,这是默认操作。你可以对标量类型(如int)使用这个属性。你可以想象一个float,它不是一个对象,所以它不能retain、copy。 assign:简单赋值,不更改索引计数(Reference Counting).使用assign: 对基础数据类...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-08-13 14:35:24
                            
                                103阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            @property是一个属性访问声明,扩号内支持以下几个属性:1,getter=getterName,setter=setterName,设置setter与getter的方法名2,readwrite,readonly,设置可供访问级别2,assign,setter方法直接赋值,不进行任何retain操作,为了解决原类型与环循引用问题3,retain,setter方法对参数进行release旧值再r            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2013-05-02 11:46:00
                            
                                88阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            Atomic::xchg替换把exchange_value的值,存到*dest去可以理解 dest = exchange_value (当然这个操作有可能会失败)返回的是原值,也就是最初的dest的值inline int  Atomic::xchg    (int     exchange_value, volatile int*     dest) {    __asm__ volatile (  "xchgl (%2),%0"    : "=r" (exchange_value)            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-01-12 15:11:44
                            
                                296阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            [ 1.atomic_read与atomic_set函数是原子变量的操作,就是原子读和原子设置的作用.2.原子操作,就是执行操作的时候,其数值不会被其它线程或者中断所影响3.原子操作是linux内核中一种同步的方式 ] 所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2016-06-28 11:25:00
                            
                                450阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            _InterlockedExchange64 
_InlineInterlockedExchange64
vlc_atomic.h
std::atomic            
                
         
            
            
            
            如果这个property是 BOOL on,
 那么Objc默认创建的 setter 为: - (void)on:(BOOL)setOn { } 
getter 为: - (BOOL)on { return on; } 
但是你可以手动更改 setter 和 getter 方法,
就像上面的: getter = xxxOn 的话, 
getter 就变为: - (BOOL)xxxOn ...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-08-06 00:44:50
                            
                                91阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            // // Person.h #import #import "Room.h" #import "Car.h" #import "Dog.h" @interface Person : NSObject { Room *_room; Car *_car; Dog *_dog; } /* - (void)setRoom:(Room *)room; - (void)se...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2017-08-25 14:18:00
                            
                                89阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            一、@synthesize & dynamic runtimer方法@synthesize: 修改变量名字,自动生成set和get并赋值.在以前的版本是没有自动生成set和get方法,往往定义一个变量,我们需要加这个东西,现在很少用;@dynamic:提醒编译器不要自动生成setter和getter方法、不要自动生成成员变量;@dynamic与@synthesize的区别@property            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2022-06-04 19:56:44
                            
                                169阅读
                            
                                                                             
                 
                
                                
                    