您的位置:首页 > 运维架构

015.assign atomic copy 属性特性

2015-07-23 02:25 357 查看
---------------
main.m
---------------
#import
<Foundation/Foundation.h>

@interface
FKBook :
NSObject
@property
(nonatomic ,
copy)
NSString* name;
// 有copy
// @property (nonatomic) NSString* name; // 没有copy
@end

@implementation
FKBook

@end

int
main()

{

FKBook* book = [[FKBook
alloc]
init];

NSMutableString* str = [NSMutableString
stringWithString:@"西游记"];
[book
setName:str];

NSLog(@"book的name为:%@",
[book
name]);
[str
appendString:@"是四大名著之一"];
//
修改str字符串

NSLog(@"book的name为:%@",
[book
name]);
}

一、编写本节代码的具体步骤:
1.可仿照第二章001节的代码编写步骤,可以把类的接口文件,类的实现文件写在main.m文件中。

二、本节代码涉及到的知识点:
1.assign:简单赋值,不更改引用计数。主要适用于基本数据类型(NSInteger等)。
2.atomic:原子操作,自动生成的set方法像加了一把锁,可避免多线程并发破坏数据的完整性。(默认的)
nonatomic:非原子操作,多线程情况下数据可能会有问题。
3.copy:当调用set方法对成员变量赋值的时候,会先给对象做一个副本,再将该副本赋值给成员变量。
4.在上面的代码中,如果有copy,当我们通过str来修改name时,book的name不会改变。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: