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不会改变。
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不会改变。
相关文章推荐
- linux(ubuntu)下编译安装cx_Freeze失败解决方法
- 浅谈Linux文件操作
- 浅谈Linux文件操作
- tftp服务器完成linux内核下载
- Linux 常用命令
- linux上定时备份mysql数据库
- linux命令 删除文件
- linux内核编译需要
- 入门级的随机数生成工具
- linux下mysql开启远程访问权限及防火墙开放3306端口
- Linux 下安装 pyenv(Python多版本管理)
- linux终端快捷键
- Ombrophobic Bovines - POJ 2391
- linux 出行日记(1)
- nginx安装
- tomcat 分别在window 和 Linux上配置SSL-安全问题
- Centos 6.5 final 安装 xtrabackup 2.2.11 小记
- linux内核维护的前期准备工作
- yii nginx 隐藏 index.php
- Strophe + BOSH + Openfire 配置实例