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.


目录
相关文章
|
iOS开发
iOS block修饰符用copy还是strong
iOS block修饰符用copy还是strong
240 0
iOS-底层原理 10:strong&copy&weak底层分析 以及 方法签名和attribute简写含义
iOS-底层原理 10:strong&copy&weak底层分析 以及 方法签名和attribute简写含义
209 0
iOS-底层原理 10:strong&copy&weak底层分析 以及 方法签名和attribute简写含义
|
存储 编译器 iOS开发
iOS 常用关键字 static、const、 extern、define
const 常量: 共享一块内存空间,就算项目中N处用到,也不会分配N块内存空间,可以被修改,在编译阶段会执行类型检查. 全局常量 包括在 .h .m 文件除非 ****@implementation**** 作用域内声明的, 都属于全局常量, 都可能由外部进行访问。
1557 0
|
iOS开发
【iOS】用strong和weak来修饰成员变量的对比
对于纯代码布局,用@property声明成员变量时,我是很自然的用strong来修饰的。然后突然有人问我用weak来修饰可不可以,我第一反应是不可以,因为用weak来修饰,初始化过后就会被释放掉,就算我第一句写了初始化的方法,立即执行addSubView也是没办法将其添加上去的。
1708 0
|
C++ iOS开发
iOS深入学习之Weak关键字介绍
从大二的开始接触OC就用到了weak属性修饰词,但是当时只是知道如何去用这个关键字:防止循环引用。根本没有深入地去了解它。 在刚来北京的时候面试过程中也常常考到该知识点。大点的公司可能会问它如何使用?如何在对象销毁后将对象置nil,小点的公司可能只问一下它的使用。
1951 0
|
索引
ios_常用关键字
一、关键字说明 1. @synthesize关键字:  根据@property设置,自动生成成员变量相应的存取方法,从而可以使用点操作符来方便的存取该成员变量 。 2. @implementation 关键字: 表明类的实现 @end 结束 3. self 关键字: 类似于java中的this,是隐藏参数,指向当前调用方法的类。
805 0
|
iOS开发
IOS strong和weak的区别
strong和weak的区别 strong表示保留它指向的堆上的内存区域不再指向这块区域了。 也就是说我强力指向了一个区域,我们不再指向它的条件只有我们指向nil或者我自己也不在内存上,没有人strong指向我了,weak表示如果还没有人指向它了,它就会被清除内存,同时被指向nil,因为我不能读取不存在的东西。
993 0
|
10月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
8月前
|
iOS开发 开发者
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
446 67
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决