assign\strong\retain\copy\week\nonatomic 介绍

//
//  IntroduceViewController.h
//  修饰属性介绍
//
//  Created by MAC on 2017/2/4.
//  Copyright © 2017年 NetworkCode小贱. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface IntroduceViewController : UIViewController
/*! assign 的介绍
 *  assign : 直接赋值,不改变索引计数器。
 *  assign 基础数据类型 (NSInteger)和C语言数据类型(int, float, double, char,等)。
 */
@property(nonatomic,assign) NSInteger  A_Integer;
@property(nonatomic,assign) int        A_Int;
@property(nonatomic,assign) float      A_Float;
@property(nonatomic,assign) double     A_Double;
@property(nonatomic,assign) char       A_Char;
/*! assign 修饰的对象,后期对该对象做任何处理,该对象的引用计数器都不增加。
 */
@property(nonatomic,assign) NSString * A_String;
/*! assign 修饰可变的对象,原始对象发生改变,该对象也跟着改变。
 *  如果该对象发生改变,原始对象也跟着改变
 */
@property(nonatomic,assign) NSMutableString * A_MutableString;
/*! assign 修饰的UI控件对象,后期不能做copy处理,但可以修改。
 */
@property(nonatomic,assign) UIView * A_View;
/*! assign 的总结
 *  原理:
        -(void)setA:(int)a{
        _a=a;
        }
 *  结论: assign 有原理可得,assign 是直接赋值。assign 修饰的是对象,则该对象后期的任何处理都不引起该对象的计数器增加。
 *  注意:1》 assign 修饰可变的对象(_a),则该对象(_a)和原始对象(a)之间是相通的,这两个中任意一个改变,其他一个就跟着改变。2》assign 修饰的UI控件对象,该对象后期不能被copy。
 */



/*! retain 的介绍
 *  retain :释放旧值,获取新值,增加输入对象的引用计数。
 *  retain 对其他NSObject和其子类
 */
@property(nonatomic,retain) NSString * R_String;
@property(nonatomic,retain) UIView * R_View;
@property(nonatomic,retain) NSMutableString * R_MutableString;


/*! copy  的介绍
 *  copy :先释放旧的对象。创建一个和输入对象相同的对象,地址不同,内容相同。
 *  copy  多用于不可变的字符串(string)。
 */
@property(nonatomic,copy) NSString * C_string;
@property(nonatomic,copy) NSMutableString * C_MString;
/*! copy:对于不可变对象copy采用的是浅复制,引用计数器加1(其实这是编译器进行了优化,既然原来的对象不可变,复制之后的对象也不可变那么就没有必要再重新创建一个对象了);对于可变对象copy采用的是深复制,引用计数器不变(原来的对象是可变,现在要产生一个不可变的当然得重新产生一个对象);
 */

/*! strong 的介绍
 *  strong 是强制的引用。当前对象被其他对象引用时,会执行retain操作,引用计数器+1。当retainCount=0时,该对象才会被销毁。
 *  strong 类和对象
 */
@property(nonatomic,strong) NSString * S_String;
@property(nonatomic,strong) UIView * S_View;

/*! week  的介绍
 *  week  一般修饰UI控件
 *  即使一个对象被持有无数个若引用,只要没有强引用指向他,那麽其还是会被清除.
 */
@property(nonatomic,weak) UITableView * W_TableView;

/*!nonatomic 的介绍
 *  atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择
 */

/*! week  和 strong 的解释
 *  (weak和strong)不同的是 当一个对象不再有strong类型的指针指向它的时候 它会被释放  ,即使还有weak型指针指向它。
     一旦最后一个strong型指针离去 ,这个对象将被释放,所有剩余的weak型指针都将被清除。
 *  举例:
    想象我们的对象是一条狗,狗想要跑掉(被释放)。
    strong型指针就像是栓住的狗。只要你用牵绳挂住狗,狗就不会跑掉。如果有5个人牵着一条狗(5个strong型指针指向1个对象),除非5个牵绳都脱落 ,否着狗是不会跑掉的。
    weak型指针就像是一个小孩指着狗喊到:“看!一只狗在那” 只要狗一直被栓着,小孩就能看到狗,(weak指针)会一直指向它。只要狗的牵绳脱落,狗就会跑掉,不管有多少小孩在看着它。
    只要最后一个strong型指针不再指向对象,那么对象就会被释放,同时所有的weak型指针都将会被清除。
 */
@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值