网站建设资讯

NEWS

网站建设资讯

Objective-C中对象间的hasa关系的复合关系是什么-创新互联

这篇文章将为大家详细讲解有关Objective-C中对象间的has a关系的复合关系是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

网站设计、成都网站制作中从网站色彩、结构布局、栏目设置、关键词群组等细微处着手,突出企业的产品/服务/品牌,帮助企业锁定精准用户,提高在线咨询和转化,使成都网站营销成为有效果、有回报的无锡营销推广。成都创新互联专业成都网站建设十年了,客户满意度97.8%,欢迎成都创新互联客户联系。
  • 什么是复合关系?

类的复合关系是类的关系中最常见的一种。

     复合是 has a 的关系,如Person类中包含一个成员属性,Book对象,Person has a Book。

  • 复合关系的实现


OC中要求,所有对象都以指针的形式引用,所以这种关系应体现为:

     Person类的对象中包含一个Book对象的地址。

    Objective-C中对象间的has a关系的复合关系是什么

图上所示,包含了三个对象:

    Person对象(由new方法创建而来)

    NSString对象(字符串对象的字面值@"张三"赋值)


    Book对象 (由new方法创建而来)


  • 复合关系的内存情况


    Objective-C中对象间的has a关系的复合关系是什么

显然,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关系的复合关系是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:Objective-C中对象间的hasa关系的复合关系是什么-创新互联
转载来源:http://cdweb.net/article/djeois.html