Objective-C内存管理第三弹:@property的使用
2015-12-13 21:42
489 查看
//main.m
//Person.h
//Person.m
//Room.h
//Room.m
#import <Foundation/Foundation.h> #import "Person.h" #import "Room.h" int main(int argc, const char * argv[]) { Person * p = [[Person alloc] init]; Room * r = [[Room alloc] init]; [p setSex:YES]; BOOL sex = p.isMan; NSLog(@"%d", sex); p.room = r; [r release]; p.room = r; Room * r2 = [[Room alloc] init]; p.room = r2; [r2 release]; r2 = nil; [p release]; p = nil; return 0; }
//Person.h
/* 内存管理关键字: retain 就在setter和getter方法中加入一些内存管理的代码 当属性为一个普通的OC对象的时候,使用retain assign 直接赋值,不生成内存管理代码 当属性为基本数据类型的时候,使用assign copy复制对象,NSString对象一般使用copy 线程安全的关键字: nonatomic:非原子性,不会生成线程安全的代码,速度快,iOS通常都是这种。 atomic:原子性,会生成线程安全的代码 控制权限: readwrite:可读可写,生成getter与setter方法是声明与实现 readonly:只读,只生成getter方法 修改方法名称: getter 修改生成的getter方法的名称 一般情况下,BOOL类型的属性的getter方法是以is开头的。 setter 修改生成的setter方法的名称 一般不去修改它 */ @interface Person : NSObject @property (nonatomic, assign, getter=isMan,setter=setSex:) BOOL man; @property (nonatomic, copy) NSString * name; @property (nonatomic, assign) int age; @property (nonatomic, retain) Room * room; @end
//Person.m
#import "Person.h" @implementation Person - (void)dealloc { // [_room release]; // _room = nil; //简写:setter方法中先release再retain self.room = nil; NSLog(@"%s",__func__); [super dealloc]; } @end
//Room.h
#import <Foundation/Foundation.h> @interface Room : NSObject @end
//Room.m
#import "Room.h" @implementation Room - (void)dealloc { NSLog(@"%s",__func__); [super dealloc]; } @end
相关文章推荐
- Objective-C内存管理第二弹:多个对象的内存管理
- Objective-C内存管理第一弹:引用计数
- Objective-C 之 KVO 详解
- Js中Prototype、__proto__、Constructor、Object、Function关系介绍
- iOS -- 查看系统版本(objective-c)
- iOS/object-c: 枚举类型 enum,NS_ENUM,NS_OPTIONS
- Objective-C:NSSet和NSMutbaleSet的用法
- 10个迷惑新手的Cocoa&Objective-c开发问题
- This qt version uses an unsupported makefile generator object reference not set to an instance of an
- Objective-C语言——NSMutableString可变字符串
- View.setTag(key,object)的使用
- Objective-C语言——NSString不可变字符串
- 《Interactive graph cuts for optimal boundary & region segmentation of objects in N-D images》读后感及问题
- Dumping a C++ object's memory layout with Clang
- net.sf.json.JSONObject 和org.json.JSONObject 的差别(转)
- JSONObject简介 (转)
- libstdc++.so.5: cannot open shared object file: No such file or directory
- objective-c初始化问题
- objective-c学习方法总结
- objective-c视频教程