黑马程序员--IOS_内存管理_@class和循环引用的问题。
来源:互联网 发布:html中链接淘宝首页 编辑:程序博客网 时间:2024/06/06 01:58
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、循环引用的问题
1、如果:A中包含B,B中包含A,并且都是通过#Import 引用会出现错误。
这时在.h文件中,通过@class 类,仅仅告诉编译器引用的是一个类。
在.m文件中 通过#import引用所有内容。
循环引用的解决办法:一段用retain,一段用assign。
2、示例代码
@class User;
@interface Card : NSObject
@porperty (nonatomic, retain, readwrite) User *user; // 用 retain
@end // Card
@implementation Card
- (void) dealloc
{
[_user release]; // 释放 用户对象。
}
@end // Card
@class Card; // 告诉编译器Card是类。
@interface User : NSObject
@porperty (nonatomic, assign, readwrite) Card *card; // 用 assign 这样就解决了,循环引用的问题。
@end // User
@implementation User
@end // User
二、@class和#import的区别
问题: @class 和 #import 的区别
1. @class 仅仅告诉编译器引用的是类。 可以提高编译器性能。因为不用引入类里面的所有内容。
2.在@implementation里面引入所用的类的内容,通过#import。此外#import可以自动避免重复引用的问题。
- 黑马程序员--IOS_内存管理_@class和循环引用的问题。
- 黑马程序员--IOS_学习笔记_内存管理_@autorelease
- 黑马程序员--IOS_学习笔记_内存管理
- 黑马程序员--IOS_学习笔记_内存管理相关@porperty
- 黑马程序员---内存管理之循环retain和@class
- 黑马程序员---06@property内存管理中如何避免循环引用的问题
- 内存管理:@class循环引用
- ——黑马程序员——OC中@class、循环retain、NSString类的内存管理
- 黑马程序员_内存管理
- 黑马程序员_内存管理
- 黑马程序员——OC基础---内存管理(引用计数器,多对象内存管理,set方法的内存管理,模型设计,循环引用)
- 黑马程序员_关于循环引用
- 黑马程序员--OC内存管理之循环retain问题
- 黑马程序员_基本数据类型和引用数据类型的内存传递的变化
- 黑马程序员--IOS_学习笔记_类的本质
- 黑马程序员--内存管理和自动引用计数
- 黑马程序员 OC中的内存管理及MRC和ARC单个对象的内存管理问题
- 黑马程序员_多对象的内存管理
- Linux 下定时器的实现方式分析
- APAB开发权限漏洞(转)
- GraphicsMagick+im4java实现高质量大图的处理
- 再次了解JAVA中的面向对象实现
- 受用的人生哲言-经典中的经典
- 黑马程序员--IOS_内存管理_@class和循环引用的问题。
- nyoj 733 万圣节派对
- 水题系列之一
- static和extern 的区别
- Android中的onActivityResult和setResult方法的使用
- 获取SAP系统sap_all权限
- linux下C时间编程(1)——时间显示与转换
- 白帽子-第二篇 客户端脚本安全
- ImageMagick简介、GraphicsMagick、命令行使用示例