文档章节

objective-c 基本的程序结构

w
 wangdake
发布于 2014/03/13 10:21
字数 559
阅读 176
收藏 5

以一段程序开始

#import <Foundation/Foundation.h>

@interface MyClass:NSObject
- (void) method;
@end

@implementation MyClass
- (void) method {
    NSLog(@"Hello,OC!\n");
}
@end

int main() {
    /* 初始化 */
    MyClass *myClass = [[MyClass alloc]init];
    
    /* 调用方法 */
    [myClass method];
    return 0;
}

终端输出结果:

分析程序结构:

#import <Foundation/Foundation.h>

     这是一段预处理指令,告诉OC编译器,在编译代码前加入Foundation 下的 Foundation.h文件

  

@interface MyClass:NSObject
- (void)method;
@end

     这段代码以@interface开始以@end结尾,定义了一个接口(MyClass),这个接口继承NSObject这个类,NSObject类在OC中是所有类的基类。(优点类似与java中的基类Object,但是要注意任何类继承NSObject时必须加上":NSObject").

其中 - (void)method; 是声明了一个 没有返回值的、不带参数的实例方法。

"-" 是说明是这个类的实例方法,只有这个类的实例才能调用。声明方法还可以用 "+", "+"是说明是这个类的类方法,这个类可以调用。

"(void)" 是说明这个方法的返回是是void(可以说是没有返回值)

"method"是这个方法的名称。

值得注意的是方法结尾没有一对括号,很多人刚开始时习惯加上()


@implementation MyClass
- (void)method{
    NSLog(@"Hello,OC!\n");
}
@end

        这段代码以@implementation开始以@end结尾,定义了MyClass类,这个类是上面MyClass接口的实现类。

      这个类中的method方法是接口的实现方法。{}内是方法的实现内容,NSLog函数是个打印输出函数。


int main() {
    /* 初始化 */
    MyClass *myClass = [[MyClass alloc]init];
    
    /* 调用方法 */
    [myClass method];
    return 0;
}

        main函数,程序的入口。

        方法的调用方式: 

                [实例 实例方法名];

                [类名 类方法];

        分析 这段初始化方法MyClass *myClass = [[MyClass alloc]init];

        [MyClass alloc] 调用类方法,由这段代码可以猜出来,这个类方法返回值是个MyClass的实例,用指针变量*myClass 接收,接着这个实例调用 init 方法初始化了这个实例。这样写这个方法就好理解点:

MyClass *myClass = [MyClass alloc];
[myClass init];

        [myClass method]调用实例方法。


小结

    一个基本的OC程序包含: 预处理指令,接口,实现类,方法,变量。


© 著作权归作者所有

w
粉丝 1
博文 3
码字总数 1250
作品 0
深圳
私信 提问
NSInteger,NSUInteger,NSNumber

Objective-C入门教程10:数字类型(NSInteger,NSUInteger,NSNumber) 柳志超博客 » Program » Objective-C » Objective-C入门教程10:数字类型(NSInteger,NSUInteger,NSNumber) posted i......

Gong_xiao
2015/10/15
20
0
使用Objective-C 输出字符串"HelloWorld"

使用Objective-C 输出字符串"HelloWorld"步骤如下! 创建Objective-C的第一个工程 HelloWorld Objective-C中的字符串 Hello World main.m^程序的入口文件^ //// main.m// HelloWorld//// Crea......

浩浩老师
2015/09/11
598
0
我是如何学习Xcode下Objective C开发的?

Objective C开发的主要IDE是Mac平台上的Xcode,当然你在Linux下也可以学习和使用,甚至在Windows下也是可以的,有兴趣的朋友可以自己搜索这方面的信息。但是我觉得最好是在Mac平台上使用Xco...

鉴客
2011/12/09
1K
0
从零开始手敲次世代游戏引擎(MacOS特别篇 贰)

上一篇我们实现了在macOS上面的编译。但是我们采用的并不是macOS的原生接口,因此获得的OpenGL Context所支持的API版本也被限制到2.1版本。这显然是不够的。 因此,接下来我们来尝试使用mac...

陈文礼
2017/11/13
0
0
swift 中的 Selector

SEL 与 @selector 在 Objective-C 中我们可以使用 将一个方法转换并赋值给一个 类型。 就是对方法的一种包装, 就是取类方法的编号,他的行为基本可以等同 C 语言的中函数指针,只不过 C 语言...

Inlight先森
2017/12/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在阿里云ecs服务器(linux之centos系统)安装调试nginx

购买阿里云ecs服务器实例 由于这里只是测试,我们就随便买一个(当然我就选最便宜的了,这里的抢占式实例测试完可以直接释放) 选择centos7.6镜像 点击下一步:网络和安全组 接下来选中开通h...

祖达
昨天
0
0
【阴阳师】真蛇10层记录

蛇切黑体系 追月神 散件一速,速度越高越好(220+) 镰鼬 招财二速,速度211以上; 山兔 火灵三速,速度180-200均可; 丑女 心眼四速,速度170左右即可; 大蛇 蚌精暴击套。速度高于阴阳师即...

Areya
昨天
4
0
js动态设置元素高度

this.$refs.xxx.style.height= this.contentHeight; 元素需要绑定

Carbenson
昨天
2
0
今天的学习

今天学到了ci框架中的查询语句的where条件语句: 1、$this->db->select('')->from('')->where('id = ??')->get()->result_array();2、$this->db->select('')->from('')->where('id', '??'......

墨冥
昨天
2
0
MySQL在高并发下的订单撮合、系统使用、共享锁与排他锁保证数据一致性

前序 距离上次择文发表,两月余久。2018年也即将要结束了,目前的工作依然是与区块链应用相关的,也很荣幸在9月初受邀签约出版暂名为《区块链以太坊DApp实战开发》一书,预计在明年年初出版。...

我最喜欢三大框架
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部