黑马程序员——set方法内存管理(@property内存管理)
来源:互联网 发布:mac foxmail 导入邮件 编辑:程序博客网 时间:2024/06/06 06:29
---------------------- iOS开发、iOS培训、期待与您交流! ----------------------
1、set方法内存管理——@property内存管理
利用@property:自动生成内存管理
建Book、Person类
在Person.h中
@property (retain) Book * book;
在person.m中
- (void)dealloc
{
[_book release];
[super dealloc];
}
在main中
int main()
{
Book *b = [[Book alloc] init];
Person *p = [[Person alloc] init];
p.book = b;
NSLog(@"%ld",[b retainCount]);
[p release];
[p release];
return 0;
}
1.set方法内存相关的参数
retain :release 旧值,retain新值(适合于OC对象类型)
assign: 直接赋值(默认,适合于非OC对象)
Copy :release 旧值,copy新值
2.是否要生成set方法
readwrite :同时生成setter和getter的声明、实现(默认)
Readonly :只会生成getter方法的声明、实现
3.多线程管理
nonatomic :性能高
atomic :性能低
4.setter和getter 方法的名称
setter :决定了set方法的名称,一定要有个冒号
getter : 决定了get方法的名称(一般用有BOOL类型)
@property (nonatomic,assign,readwrite) int weight;
@property (readwrite,assign) int height;
@property (nonatomic,assign) int age;
@property (retain) NSString *name;
@property (getter = isRich) BOOL rich;
p.rich = YES;
BOOL b = p.rich;
2、循环retain和@class:相互引用
建Person 、Card类
在Person.h中
#import <Foundation/Foundation.h>
@class Card;// 仅仅告诉编译器,card是个类
@interface Person :NSObject
@property (nonatomic,assign) Card *card;// 这里用assign,是为了防止无限引用
@end
在Person.m中
#import "Person.h"
#import "Card.h"
@implementation Person
- (void)dealloc
{
NSLog(@"Person对象被回收");
[super dealloc];
}
@end
在Card.h中
#import <Foundation/Foundation.h>
@class Person
@interface Card :NSObject
@property (nonatomic,retain) Person *person;// 上面已经写了assign,这里写retain,所以后面_person 要release一下
@end
在Card.m中
#import "Person.h"
#import "Card.h"
@implementation Card
- (void)dealloc
{
NSLog(@"Card对象被回收");
[_person release];
[super dealloc];
}
@end
在main中
int main()
{
Person *p = [[Person alloc] init];
Card *c = [[Card alloc] init];
p.card =c;
c.person=p;
[c release];
[p release];
return 0;
}
- 黑马程序员——set方法内存管理(@property内存管理)
- 黑马程序员——OC——set方法内存管理和property
- 黑马程序员23——OC之内存管理(set方法的内存管理)
- 黑马程序员-多对象,set方法,@property的内存管理,以及模型设计练习
- 黑马程序员——OC基础---内存管理(引用计数器,多对象内存管理,set方法的内存管理,模型设计,循环引用)
- 黑马程序员——IOS基础——OC内存管理-set方法内存管理及微博模型设计
- 黑马程序员-Object C之set方法的内存管理
- 黑马程序员---04set方法的内存管理
- 黑马程序员 — OC(内存管理)
- 黑马程序员--IOS学习日记:08--内存管理之set方法的内存管理
- 黑马程序员---Objective-C 内存管理 - set方法的内存管理
- 黑马视频学习笔记-内存管理-set方法内存管理
- OC基础—内存管理之set方法内存管理
- 《ios—set方法的内存管理》
- 黑马程序员——内存管理
- 黑马程序员——内存管理
- 黑马程序员——OC---内存管理
- 黑马程序员——OC内存管理
- 仿今日头条的graidview拖动
- [动态规划]最长公共子串长度问题
- 优秀程序员素质培养
- 仿uc下部弹出菜单
- QThread 使用探讨
- 黑马程序员——set方法内存管理(@property内存管理)
- 统一的统一发衣服一个富有光伏股
- android 滚轮刻度尺的实现
- 浅谈响应式布局
- 用ATL建立轻量级的COM对象(七)
- POJ 1741 Tree 树形DP(分治)
- 用ATL建立轻量级的COM对象(六)
- viewgroup实现item拖动效果
- android仪表统计柱状等图标的绘制(开源库XCL-Charts)