IOS @proporty 关键字(一)retain strong

简介: IOS @proporty 关键字(一)retain strong
@interface User : NSObject
@property (nonatomic,retain) NSString* tRetain;
@property (nonatomic,assign) NSString* tAssign;
@property (nonatomic,copy) NSString* tcopy;
@end



类User有个属性tRetain, 只是测试就用NSString类型了(此类型一般用copy, 因为可能是个NSMutableString,不希望在赋值后被其他地方修改内容)。

User* user = [[User alloc]init];
    NSString* testRetain = [NSString stringWithFormat:@"retain"];
    NSLog(@"testRetain.retainCount=%lu",(unsigned long)testRetain.retainCount);  //1
    user.tRetain = testRetain;
    NSLog(@"testRetain.retainCount=%lu",(unsigned long)testRetain.retainCount);   //2
    NSLog(@"user.tRetain.retainCount=%lu",(unsigned long)user.tRetain.retainCount); //2
    NSString* testRetain2 = @"retain2";
    NSLog(@"testRetain2.retainCount=%lu",(unsigned long)testRetain2.retainCount); //4294967295 自动释放对象  返回max unsigned long
    user.tRetain = testRetain2;
    NSLog(@"testRetain.retainCount=%lu",(unsigned long)testRetain.retainCount);   //1
    NSLog(@"testRetain2.retainCount=%lu",(unsigned long)testRetain2.retainCount); //4294967295
    NSLog(@"user.RetainValue.retainCount=%lu",(unsigned long)user.tRetain.retainCount); //4294967295
    NSString* testRetain3 = [NSString stringWithFormat: @"retain3"];
    NSLog(@"testRetain3.retainCount=%lu",(unsigned long)testRetain3.retainCount); //1
    [testRetain3 retain];
    NSLog(@"testRetain3.retainCount=%lu",(unsigned long)testRetain3.retainCount); //2
    NSString* testRetain4 = [NSString stringWithString:testRetain3];
    NSLog(@"testRetain3.retainCount=%lu",(unsigned long)testRetain3.retainCount); //3
    NSLog(@"testRetain4.retainCount=%lu",(unsigned long)testRetain4.retainCount); //3

strong是ARC后引入的关键字, 在ARC环境中等同于Retain。

NSSring* str = [NSString stringWithString:字符串];   此方法相当于上文对一个retain属性赋值。   若后面的字符串参数的计数为4294967295,则str的计数也是。   若字符串参数可计数, 例如1, 则执行后计数加1.


目录
相关文章
|
11月前
|
iOS开发
iOS block修饰符用copy还是strong
iOS block修饰符用copy还是strong
112 0
iOS-底层原理 10:strong&copy&weak底层分析 以及 方法签名和attribute简写含义
iOS-底层原理 10:strong&copy&weak底层分析 以及 方法签名和attribute简写含义
143 0
iOS-底层原理 10:strong&copy&weak底层分析 以及 方法签名和attribute简写含义
|
存储 编译器 iOS开发
iOS 常用关键字 static、const、 extern、define
const 常量: 共享一块内存空间,就算项目中N处用到,也不会分配N块内存空间,可以被修改,在编译阶段会执行类型检查. 全局常量 包括在 .h .m 文件除非 ****@implementation**** 作用域内声明的, 都属于全局常量, 都可能由外部进行访问。
1401 0
|
iOS开发
【iOS】用strong和weak来修饰成员变量的对比
对于纯代码布局,用@property声明成员变量时,我是很自然的用strong来修饰的。然后突然有人问我用weak来修饰可不可以,我第一反应是不可以,因为用weak来修饰,初始化过后就会被释放掉,就算我第一句写了初始化的方法,立即执行addSubView也是没办法将其添加上去的。
1616 0
|
C++ iOS开发
iOS深入学习之Weak关键字介绍
从大二的开始接触OC就用到了weak属性修饰词,但是当时只是知道如何去用这个关键字:防止循环引用。根本没有深入地去了解它。 在刚来北京的时候面试过程中也常常考到该知识点。大点的公司可能会问它如何使用?如何在对象销毁后将对象置nil,小点的公司可能只问一下它的使用。
1864 0
|
索引
ios_常用关键字
一、关键字说明 1. @synthesize关键字:  根据@property设置,自动生成成员变量相应的存取方法,从而可以使用点操作符来方便的存取该成员变量 。 2. @implementation 关键字: 表明类的实现 @end 结束 3. self 关键字: 类似于java中的this,是隐藏参数,指向当前调用方法的类。
720 0
|
iOS开发
IOS strong和weak的区别
strong和weak的区别 strong表示保留它指向的堆上的内存区域不再指向这块区域了。 也就是说我强力指向了一个区域,我们不再指向它的条件只有我们指向nil或者我自己也不在内存上,没有人strong指向我了,weak表示如果还没有人指向它了,它就会被清除内存,同时被指向nil,因为我不能读取不存在的东西。
925 0
|
6天前
|
安全 Android开发 iOS开发
探索安卓与iOS开发的差异:平台特性与用户体验的深度对比
在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。本文旨在通过数据驱动的分析方法,深入探讨这两大操作系统在开发环境、用户界面设计及市场表现等方面的差异。引用最新的行业报告和科研数据,结合技术专家的观点,本文将提供对开发者和市场分析师均有价值的洞见。
|
9天前
|
Java 开发工具 Android开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
在移动应用开发的广阔天地中,Android和iOS两大平台各自占据着半壁江山。本文将深入探讨这两个平台在开发过程中的关键差异点,包括编程语言、开发工具、用户界面设计、性能优化以及市场覆盖等方面。通过对这些关键因素的比较分析,旨在为开发者提供一个清晰的指南,帮助他们根据项目需求和目标受众做出明智的平台选择。