天天看点

Objective-C @class

@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 &lt;Foundation/Foundation.h&gt;</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 ,如需转载请自行联系原作者

继续阅读