天天看點

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 ,如需轉載請自行聯系原作者

繼續閱讀