__Strong&__Weak

/关键字: OC (Objective - C )保留的一些单词

//对象的管理权:管理对象是否释放的权限

//__weak修饰的指针,如果指向刚创建好的对象,则这个对象在创建成功后立即释放

//__weak指向的对象释放之后,指针置为nil,空指针nil可以做任何事,但是调用不会触发事件即调用不成功

//弱指针主要的作用是引用对象

//成员变量依附于viewController对象,当viewController对象释放的时候,这些成员变量及属性也跟着释放

//成员变量释放方式

//1.置空nil:强制释放

//_peopleNormalPeople = nil;

//声明成员变量

/*

__strong :强指针拥有对象的管理权

__weak:弱指针不拥有对象的管理权

原理:当一个对象有强指针指向的时候,对象不会释放,当没有强指针指向的时候会立即释放

默认情况下是:__strong

*/

__strong People* people;//等价于People* peopel;

__weak People* people1;

//__strong :强指针拥有对象的管理权

@property (nonatomic,strong) UIView* view;

//__weak:弱指针不拥有对象的管理权

@property (nonatomic,weak) UIView* view1;

//copy和MRC中的作用相同

//修饰实现NSCoping协议的那些类

@property(nonatomic,copy) NSString* name;

//unsafe_unretained:不安全不拥有对象管理的修饰

//一般修饰基本数据类型,但是不用

@property (nonatomic,unsafe_unretained) int age;

//在ARC中retain依然有效,只不过在编译时会把retain换为strong

@property (nonatomic,retain) UIView* view2;

//在ARC中assign依然有效,只不过在编译时会把assign换为unsafe_unretained

@property (nonatomic,assign) int count;


//改变%@格式符输出对象的内容

- (NSString *)description{

return [NSString stringWithFormat:@"<%@ :%p>",self.name,self];

}

//使用weak是为了防止出现循环调用

//@property (nonatomic,weak) People * friend;

//循环引用的解决方法

//1.解开环状引用

//People.friends = nil;

//2.属性声明为weak

//使用assign是为了防止循环使用

@property (nonatomic,assign)id delegate;

//在ARC工程中使用MRC要在build phrase中的该类的.m之后加:-fno-objc-arc

//在MRC工程中使用ARC要在build phrase中的该类的.m之后加:-fobjc-arc

//弱指针打印输出时,我们为了防止在输出时被释放掉,会暂时retain一下,弱指针输出完再释放掉

//p1 :如果是弱指针指向p1,引用计数不变。如果是强指针指向p1 ,引用计数+1

#pragma mark === __bridge

- (void)testCastBridge{

People *people = [[People alloc] initWithNmae:@"局部用于测试_bridge的强2指针"];

//将OC指针转化C指针__bridge:没有发生对象管理权的转换

void *peopelPtr = (__bridgevoid*)(people);

NSLog(@"+++%@",people);

//将C指针转化为OC的指针__bridge:没有发生对象管理权的转化

__weak People*p1 = (__bridgePeople*)(peopelPtr);

#pragma unused(p1)

NSLog(@" +++++ %@",people);

}

#pragma mark ==== __bridge_tranfer

-(void)testCastBridgeTranfer{

NSLog(@"前_strong1 = %@ ",voidPeopel);

voidPeopel=nil;

//__bridge_tranfer:将指针转化为OC指针同时将对象的管理权交回给ARC

__weakPeople* people = (__bridgePeople*)(voidPeopel);

CFBridgingRelease(voidPeopel);

NSLog(@"后_string1 =  %@",voidPeopel);

}

#pragma mark === BridgeRetain

- (void)testCastBridgeRetain{

People *people = [[People alloc] initWithNmae:@"用于测试__bridge_retain的局部强指针"];

//__bridge_retained将OC指针转化为C指针同时转交对象的管理权->  RC +1

void *peopelPtr = (__bridge_retained void *)people;

NSLog(@"__bridge_retained------%@",people);//2

//不能使用__bridge_retained将C指针转化为OC指针。单向的转化

//people * p1 = (__bridge_transfer People *)peopelPtr;

//在桥接过程中我们要手动管理C指针用完之后释放

CFRelease(peopelPtr);

NSLog(@"__bridge_retained------%@",people);//1

void *p2 =CFBridgingRetain(people);

#pragma unused (p2)

NSLog(@"3--__bridge_retained------%@",people);//2

}

#pragma mark === C中基本测试指针

- (void)testTypeCastC{

int num = 456;

NSLog(@"num ---- %d",num);

//numPrt整型指针

//&:取址运算符&X取num得内存地址

int* numPtr = #

NSLog(@"numPrt = %p",numPtr);

//*:间接寻址运算符取指针指向的内存地址中的值

NSLog(@"numPrt's value = %d",*numPtr);

//关系

//num = *numPtr;

//numPrt = #

//void *:声明一个名为voidPrt无类型指针(不限类型指针)

void* voidPrt = #

NSLog(@"---%p",voidPrt);

int* voidPrt_int = (int*)voidPrt;

NSLog(@"-----%d   %d",*(int*)voidPrt,*voidPrt_int);

}

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

推荐阅读更多精彩内容