Objective - C基础: 第五天 - 4.@property - 内存管理
来源:互联网 发布:怎么健身 知乎 编辑:程序博客网 时间:2024/05/01 16:11
在前面, 我们基本上讲完了OC的内存管理, 但如果按照我们之前那样子做, 我们需要写非常非常多的代码, 在我们实际开发中, 不可能就只有那么一两个对象, 所以我们需要写的set方法和get方法就一大堆, 比如下面这个例子:
#import <Foundation/Foundation.h>#import "Book.h"@interface Person : NSObject{ int _age; Book *_book;}- (void)setAge:(int)age;- (int)age;- (void)setBook:(Book *)book;- (Book *)book;@end@implementation Person- (void)setAge:(int)age{ _age = age;}- (int)age{ return _age;}- (void)setBook:(Book *)book{ if (_book != book) { [_book release]; _book = [book retain]; }}- (Book *)book{ return _book;}- (void)dealloc{ [_book release]; [super dealloc];}@end
#import <Foundation/Foundation.h>@interface Book : NSObject@end@implementation Book@end
#import <Foundation/Foundation.h>#import "Person.h"#import "Book.h"int main(int argc, const char * argv[]){ Person *p = [[Person alloc]init]; Book *b = [[Book alloc]init]; p.book = b; NSLog(@"%ld", [b retainCount]); [b release]; [p release]; return 0;}
没错, 按照上面的例子, 我们是可以进行正常的内存管理, 但这样子写, 会累死人, 因为一旦创建一个对象就要写一次set, get方法, 而且这些代码都是非常的垃圾, 非常的恶心, 一旦对象多了, 那么整个项目就乱七八糟, 几乎都是set和get方法, 为了解决这个问题, 其实可以运用@property, 比如:
#import <Foundation/Foundation.h>#import "Book.h"@interface Person : NSObject@property int age;@property (retain) Book *book;@end
只要在@property后加上一个小括号并且写上retain, 那么就可以自动生成这一堆代码:
- (void)setBook:(Book *)book{ if (_book != book) { [_book release]; _book = [book retain]; }}- (Book *)book{ return _book;}
有了@property(retain)之后, 从此我们写代码就非常的舒服了, 不用再去写什么set, get方法了~~当然@property并不是万能的, dealloc方法还是需要我们自己去写~~如果不想写dealloc, apple官方也有提供一个方法, 那么就是ARC机制啦, 这个我们后面会讲到~~
当然, 在@property()的小括号里面, 不只是写retain, 还可以在里面写很多参数, 这个我们后面慢慢详解~~~
好了, 这次我们讲到这里, 下次我们继续~~~
0 0
- Objective - C基础: 第五天 - 4.@property - 内存管理
- Objective - C基础: 第五天 - 3.set方法内存管理
- Objective - C基础: 第五天 - 5.@property - 参数详解
- Objective - C基础: 第五天 - 2.多个对象之间的内存管理
- Objective-C内存管理基础
- Objective-C内存管理基础
- Objective - C基础: 第五天 - 1.计数器的基本认识
- Objective - C基础: 第五天 - 6.循环引用
- Objective - C基础: 第五天 - 7.autorelease的基本认识
- Objective-C内存管理(四)@property相关参数详解
- Objective-C内存管理第三弹:@property的使用
- Objective-C基础——内存管理
- Objective - C基础: 第三天 - 4.@property和@syhthesize的基本认识
- 学习Objective-C--第五天
- objective-c 第五天 类 对象 方法
- Objective-C第2版第9章 内存管理
- objective-c内存管理
- Objective-c 内存管理
- 吴晓波:中国人为何蜂拥去日本买马桶盖
- gem5全系统模拟
- USACO1.2.3 Name That Number (namenum)
- 韓長庚 易經大意 目次
- 杭电acm:最小公倍数(附源码)
- Objective - C基础: 第五天 - 4.@property - 内存管理
- HTML页面过渡效果大全
- getopt和getopt_long函数
- Android动态加载XML文件及控件来简单实现QQ好友印象的功能
- 新建Maven+Spring项目错误集锦
- uva 11384 Help is needed for Dexter(模拟)
- [Java]Eclipse配置JDK的图解步骤
- USACO1.2.4 Palindromic Squares (palsquare)
- Codeforces Round #276 (Div. 2) Factory