@class主要是在h(头文件)中使用。主要的作用是告诉编译器:我要在本类中,使用另一个类。
假设要在Aonauly类中使用Action类,使用@class实现过程如下:
首先是定义Action
1,Action.h代码如下:
<code>//</code>
<code>// Action.h</code>
<code>// Ainy_Console</code>
<code>// Created by Apple on 2017/9/9.</code>
<code>// Copyright 2017年 Apple. All rights reserved.</code>
<code>#import <Foundation/Foundation.h></code>
<code>@interface Action : NSObject</code>
<code>-(</code><code>void</code><code>) eat;</code><code>//声明吃的方法</code>
<code>@end</code>
2,Action.m代码如下:
<code>// Action.m</code>
<code>#import "Action.h"</code>
<code>@implementation Action</code>
<code>/**</code>
<code> </code><code>*实现吃的方法</code>
<code> </code><code>*/</code>
<code>-(</code><code>void</code><code>) eat</code>
<code>{</code>
<code> </code><code>NSLog(@</code><code>"I love eat apple"</code><code>);</code>
<code>}</code>
好 , 我们在Aonaufly类中申明对Action的引用
1,aonaufly.h代码如下:
<code>// Aonaufly.h</code>
<code>// Created by Apple on 2017/9/7.</code>
<code>@</code><code>class</code> <code>Action;</code>
<code>@interface Aonaufly : NSObject</code>
<code>@property </code><code>int</code> <code>_a , _b;</code>
<code>-(</code><code>int</code><code>) sum_one : ( </code><code>int</code><code>) c sum_b : (</code><code>int</code><code>) d;</code><code>//带参数名的方法</code>
<code>-(</code><code>int</code><code>) sum :(</code><code>int</code><code>) i : (</code><code>int</code><code>) j;</code><code>//不带参数名的方法</code>
<code>-(Action *) action;</code><code>//申明了自己定义的一个类Action</code>
<code>-(</code><code>void</code><code>) setAction:(Action *) ac;</code>
注意:
<a href="https://s2.51cto.com/wyfs02/M01/A4/E0/wKioL1mzYADhXV7kAADPNyY3umY535.png-wh_500x0-wm_3-wmp_4-s_2710635321.png" target="_blank"></a>
在H文件中必需要编译器知道Action到底是什么 , 那个@class就是干这个的。
2,Aonaufly.m代码如下:
<code>// Aonaufly.m</code>
<code>#import "Aonaufly.h"</code>
<code>@implementation Aonaufly</code>
<code> </code><code>Action * action;</code>
<code>@synthesize _a , _b;</code>
<code>-(</code><code>int</code><code>) sum_one:(</code><code>int</code><code>)c sum_b:(</code><code>int</code><code>) d</code>
<code> </code><code>return</code> <code>[self sum:c :d];</code><code>//调用本类的方法sum</code>
<code>-(</code><code>int</code><code>) sum:(</code><code>int</code><code>)i :(</code><code>int</code><code>)j</code>
<code> </code><code>return</code> <code>i + j;</code>
<code>-(</code><code>void</code><code>) setAction:(Action *)ac</code>
<code> </code><code>action = ac;</code>
<code>-(Action *) action</code>
<code> </code><code>return</code> <code>action;</code>
关于调用
<code>// main.m</code>
<code>// Created by Apple on 2017/9/6.</code>
<code>int</code> <code>main(</code><code>int</code> <code>argc, </code><code>const</code> <code>char</code> <code>* argv[]) {</code>
<code> </code><code>@autoreleasepool {</code>
<code> </code><code>Aonaufly *myAonaufly;</code>
<code> </code><code>myAonaufly = [[Aonaufly alloc] init];</code>
<code> </code><code>int</code> <code>sum = [ myAonaufly sum_one:1 sum_b:2];</code><code>//调用方法(带参数)</code>
<code> </code><code>NSLog(@</code><code>"this is 1 + 2 SUM : %i"</code> <code>, sum);</code>
<code> </code>
<code> </code><code>//为属性 _a , _b 赋值</code>
<code> </code><code>myAonaufly._a = 3;</code>
<code> </code><code>myAonaufly._b = 5;</code>
<code> </code><code>//调用不带参数名的sum方法如下</code>
<code> </code><code>sum = [myAonaufly sum:myAonaufly._a :myAonaufly._b];</code>
<code> </code><code>NSLog(@</code><code>" this %i + %i value is : %i "</code> <code>, myAonaufly._a , myAonaufly._b , sum);</code>
<code> </code><code>//对于@class</code>
<code> </code><code>Action *myAction;</code>
<code> </code><code>myAction = [[Action alloc] init];</code>
<code> </code><code>[myAonaufly setAction:myAction];</code>
<code> </code><code>[myAonaufly.action eat];</code><code>//调用Aoanufly中Action的eat方法</code>
<code> </code><code>}</code>
<code> </code><code>return</code> <code>0;</code>
结果如下:
<a href="https://s3.51cto.com/wyfs02/M00/A4/E0/wKioL1mzYXnhBo9ZAABZNIU3ZRE985.png-wh_500x0-wm_3-wmp_4-s_3412729942.png" target="_blank"></a>
[myAonaufly.action eat] 注意是调用Aonaufly 中的Action的eat方法
本文转自Aonaufly51CTO博客,原文链接:http://blog.51cto.com/aonaufly/1963904 ,如需转载请自行联系原作者