iOS开发-Day16-OC复合&class关键字

  • 为什么需要复合:
    某一个复杂的类,需要由多个不同的部分组成,比如电脑需要由主机键盘显示器组成,这时候就可以用到复合,将部分作为主体的实例变量

  • 复合和继承
    继承是“is A”关系;复合是“has A”关系。
    这里写图片描述
    这里写图片描述

复合的实现:

1、复合通过包含作为实例变量的的对象指针实现的。

    @interface Unicycle : NSObject
    #import "Pedal.h"
    #import "Tire.h"
     {

          Pedal *pedal;

          Tire *tire;

      }//Pedal和tire通过复合的方式组成了Unicycle
       //严格地讲,只有对象间的组合才能叫做复合,诸如int、float、enum和 struct等基本类型都被认为是对象的一部分。

2、存取方法——用来读取或者改变某个对象属性的方法。

#import <Foundation/Foundation.h>
#import "Car.h"
@interface Car : NSObject

{

    Engine *engine;

    Tire * tires[4];

}


- (Engine *) engine;//getter访问器

- (void) setEngine : (Engine *)newEngine;//setter访问器

- (Tire *) tireAtIndex : (int)index;

- (void) setTire : (Tire *)tire atIndex : (int)Index;


@end

//当然,我们可以直接使用@property为其声明对象属性以及存取方法
  • @Class

    • 关键字@class的作用

      OC中在相互导入的时候编译是不通过的,会导致错误,解决办法就是使用@class关键字
      @class仅仅告诉编译器,在进行编译的时候把后面的名字作为一个类来处理。

    • 步骤

      A类中的导入B.h方式不变,在B.h头文件中使用@class关键字引入A类型,使其编译通过,然后在B.m文件中导入A.h文件,A使其运行通过。

    • 循环引用解决方法

      一端使用retain,一端使用assign(使用assign的在dealloc中也不用再release)

聚合:表示两个对象之间是整体和部分的弱关系,部分的生命周期可以超越整体。
组合:表示两个对象之间是整体和部分的强关系,部分的生命周期不能超越整体,或者说不能脱离整体而存在。

-

-
-15.8.4
-15.8.11

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值