@class

@class 类名:通过这个来告诉Objective-C编译器这是一个类而已。

一般来说,eg:当在classA.h文件中需要声明一个classB的指针时,为了能够让编译器知道classB是个什么类型的东西,有2中方式可以实现:

1.通过#import "classB.h"

缺点 :因为头文件之间的依赖关系,可能会造成很多文件被重新编译过,从而降低了效率。

2.通过@class classB 仅仅是告诉编译器classB是一个类而已。


eg:
Car.h中:
#import <Cocoa/Cocoa.h>
@class Tire
@class Engine
@interface Car:NSObject
{
    Tire* tires[4];        //4个轮子
    Engine* engine;        //一个引擎
}
- (void)setEngine:(Engine*)newEngine;
- (Engine*)engine;
- (void)setTire:(Tire*)tire atIndex:(int)index;
- (Tire*) tireAt:(int)index;
- (void) print;
@end


在Car.m文件中由于要用到Tire和Engine类中的实例变量等具体信息,因此需要在Car.m中import进Tire.h和Engine.h来。

#import "Car.h"
#import "Tire.h"
#import "Engine.h"

@implementation Car
- (void)setEngine:(Engine*)newEngine

{

    [newEngine retain];        //保留引用

    [engine release];

    engine = newEngine;
}

- (Engine*)engine
{
    return (engine);
}

- (void)setTire:(Tire*)tire atIndex:(int)index
{
    if(index<0 || index>3){
        NSLog(@"Error: out of index!!!");
        exit(1);
    }else{
        tires[index] = tire;
    }
}

- (Tire*) tireAt:(int) index
{
    if(index<0 || index>3){
        NSLog(@"Error: out of index!!!");
        exit(1);
    }else{
        return tires[index];
    }
}

- (void) print  
{
    .....

}

-(void)dealloc

{

    [engine relase];

}

@end


转载于:https://my.oschina.net/leojack/blog/91503

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值