---------------
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 ];
@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不会改变。