重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关Objective-C中对象间的has a关系的复合关系是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联建站是专业的越城网站建设公司,越城接单;提供做网站、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行越城网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
什么是复合关系?
类的复合关系是类的关系中最常见的一种。
复合是 has a 的关系,如Person类中包含一个成员属性,Book对象,Person has a Book。
复合关系的实现
OC中要求,所有对象都以指针的形式引用,所以这种关系应体现为:
Person类的对象中包含一个Book对象的地址。
图上所示,包含了三个对象:
Person对象(由new方法创建而来)
NSString对象(字符串对象的字面值@"张三"赋值)
Book对象 (由new方法创建而来)
复合关系的内存情况
显然,p指针一定是函数或者方法中的局部变量,其内存使用的是栈控件
Objective-C中的所有对象一定是在堆中的,故三个对象Person、NSString、Book的内存都是堆空间的
Person、NSString、Book的内存空间并不是连续或互相包含的
Person has a NSString 表现为 Person对象中有NSString对象的地址
Person has a Book 表现为Person对象中有Book对象的地址
循环引用问题
如果出现两个类中属性互相复合时,头文件互相包含会出现循环引用的情况
在头文件中使用@class是声明被复合的类,在源文件再包含该类的头文件即可解决这个问题
//AMPerson.h @class AMBook; @interface AMPerson : NSObject { AMBook * book; } @end
//AMPerson.m #import "AMBook.h" @implementation AMPerson //... @end
//AMBook.h @class AMPerson; @interface AMBook : NSObject { AMPerson * person; } @end
//AMBook.h #import "AMPerson.h" @implementation AMBook //... @end
关于Objective-C中对象间的has a关系的复合关系是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。