Objective-C @class

简介:

@class主要是在h(头文件)中使用。主要的作用是告诉编译器:我要在本类中,使用另一个类。

假设要在Aonauly类中使用Action类,使用@class实现过程如下:


首先是定义Action

1,Action.h代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
//
//  Action.h
//  Ainy_Console
//
//  Created by Apple on 2017/9/9.
//  Copyright  2017年 Apple. All rights reserved.
//
 
#import <Foundation/Foundation.h>
 
@interface Action : NSObject
-( void ) eat; //声明吃的方法
@end

2,Action.m代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//
//  Action.m
//  Ainy_Console
//
//  Created by Apple on 2017/9/9.
//  Copyright  2017年 Apple. All rights reserved.
//
 
#import "Action.h"
 
@implementation Action
/**
  *实现吃的方法
  */
-( void ) eat
{
     NSLog(@ "I love eat apple" );
}
@end


好 , 我们在Aonaufly类中申明对Action的引用

1,aonaufly.h代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//
//  Aonaufly.h
//  Ainy_Console
//
//  Created by Apple on 2017/9/7.
//  Copyright  2017年 Apple. All rights reserved.
//
 
#import <Foundation/Foundation.h>
 
@ class  Action;
 
@interface Aonaufly : NSObject
@property  int  _a , _b;
-( int ) sum_one : (  int ) c sum_b : ( int ) d; //带参数名的方法
-( int ) sum :( int ) i : ( int ) j; //不带参数名的方法
-(Action *) action; //申明了自己定义的一个类Action
-( void ) setAction:(Action *) ac;
@end

注意:

wKioL1mzYADhXV7kAADPNyY3umY535.png-wh_50

在H文件中必需要编译器知道Action到底是什么 , 那个@class就是干这个的。


2,Aonaufly.m代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//
//  Aonaufly.m
//  Ainy_Console
//
//  Created by Apple on 2017/9/7.
//  Copyright  2017年 Apple. All rights reserved.
//
 
#import "Aonaufly.h"
#import "Action.h"
 
@implementation Aonaufly
{
     Action * action;
}
@synthesize _a , _b;
-( int ) sum_one:( int )c sum_b:( int ) d
{
     return  [self sum:c :d]; //调用本类的方法sum
}
-( int ) sum:( int )i :( int )j
{
     return  i + j;
}
-( void ) setAction:(Action *)ac
{
     action = ac;
}
 
-(Action *) action
{
     return  action;
}
@end


关于调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//
//  main.m
//  Ainy_Console
//
//  Created by Apple on 2017/9/6.
//  Copyright  2017年 Apple. All rights reserved.
//
#import "Aonaufly.h"
#import "Action.h"
int  main( int  argc,  const  char  * argv[]) {
     @autoreleasepool {
         Aonaufly *myAonaufly;
         myAonaufly = [[Aonaufly alloc] init];
         int  sum = [ myAonaufly sum_one:1 sum_b:2]; //调用方法(带参数)
         NSLog(@ "this is 1 + 2 SUM : %i"  , sum);
         
         //为属性 _a , _b 赋值
         myAonaufly._a = 3;
         myAonaufly._b = 5;
         
         //调用不带参数名的sum方法如下
         sum = [myAonaufly sum:myAonaufly._a :myAonaufly._b];
         NSLog(@ " this %i + %i value is  : %i "  , myAonaufly._a , myAonaufly._b , sum);
         
         //对于@class
         Action *myAction;
         myAction = [[Action alloc] init];
         [myAonaufly setAction:myAction];
         [myAonaufly.action eat]; //调用Aoanufly中Action的eat方法
     }
     return  0;
}

结果如下:

wKioL1mzYXnhBo9ZAABZNIU3ZRE985.png-wh_50

[myAonaufly.action eat] 注意是调用Aonaufly 中的Action的eat方法














本文转自Aonaufly51CTO博客,原文链接:http://blog.51cto.com/aonaufly/1963904 ,如需转载请自行联系原作者


相关文章
|
开发工具 iOS开发
(7) 引用Objective-C class library
原文 引用Objective-C class library 这个范例是如何在Xamarin.ios中去使用一个我们自行在Xcode中开发的Objective-c Class Library. 主要会执行的步骤如下 在Xcode 里面去建立一个Class Library 编译这个Clas...
1298 0
|
C# iOS开发 程序员
objective-C中的扩展方法与partial class
在c#中要扩展一个现有类很容易,比如这样: public static class Utils { public static void PrintToConsole(this string strSrc) { Console.
911 0
|
C# iOS开发
objective-C中的Class(类类型),Selector(选择器SEL),函数指针(IMP)
今天在园子里看到了一篇牛文“Objective-C 2.0 with Cocoa Foundation--- 5,Class类型,选择器Selector以及函数指针 ”,讲得十分精彩,忍不住把它的代码加上注释整理于此,以便日后查看。
1116 0
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
1650 2
|
开发工具 iOS开发 容器
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
iOS Objective-C 应用连接Azure Storage时,若不关闭账号的匿名访问,程序能正常运行。但关闭匿名访问后,上传到容器时会出现错误:“Public access is not permitted”。解决方法是将创建容器时的公共访问类型从`AZSContainerPublicAccessTypeContainer`改为`AZSContainerPublicAccessTypeOff`,以确保通过授权请求访问。
374 0
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
|
缓存 开发工具 iOS开发
优化iOS中Objective-C代码调起支付流程的速度
优化iOS中Objective-C代码调起支付流程的速度
444 2
|
安全 JavaScript 前端开发
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
1293 0
|
iOS开发 容器
iOS 代码规范格式 Objective-C(上)
iOS 代码规范格式 Objective-C
836 0
iOS 代码规范格式 Objective-C(上)
|
编译器 API iOS开发
iOS 代码规范格式 Objective-C(下)
iOS 代码规范格式 Objective-C(下)
471 0