Objective-C——第一个OC程序,以及OC程序的结构分析

第一个OC程序,以及OC程序的结构分析


———- android培训java培训、期待与您交流! ———-


第一个Object-C程序

//main.m

#import <Foundation/Foundation.h>

int main(int argc, const char* argv[])
{
    @autoreleasepool {
        NSLog(@"Hello World!");
    }
    return 0;
}

上面这段代码跟C是不是很像,下面我们来分析一下它的各个结构


OC程序的结构分析

import的作用

#import < Foundation/Foundation.h >

作用1
用来拷贝引入文件的内容
由于程序中用到了NSLog(@”Hello World!”)而NSLog()函数的声明和实现都在Foundation框架中。
所以我们需要使用 #import 来对Foundation框架进行引用

作用2
可以防止文件内容被重复引用

//不用再加下面这些预处理代码来解决文件被重复引用的问题了
#ifndef _STDIO_H
#define _STDIO_H
#endif
PS: 对于import类似的语句我们在C语言中也经常使用,本句对应C语言中的 #include 语句

main函数

int main(int argc, const char* argv[])
{
    return 0;
}

1 main前面的int 是说mian函数的返回值类型,和return语句一起使用
作用:告示系统本程序的退出状态为0

2 参数 int argc
作用: 是统计本次程序运行一共传了多少个参数
如果一个都不传 argc == 1 表示运行程序的字符串名称

3 参数 const char * argv[]
这是一个所有成员指向地址不可变的指针数组
作用 : 存储指向本次程序运行时键入的所有参数的指针

e.g. :

如果mian.m文件通过编译链接操作后指定得到的可执行程序名称为app,并且本次程序运行没有接收参数那么此时:

 argc == 1 
 argv[0] equal ./app 

如果mian.m文件通过编译链接操作后指定得到的可执行程序名称为app,并且本次程序运行接收了1个参数为HeyBoy那么此时:

./app HeyBoy

 argc == 2 
 argv[0] equal ./app 
 argv[1] equal HeyBoy 

NSLog函数

类似于C语言中的printf函数
作用: 打印字符串信息,本身有换行效果
用法: int sum = 0; NSLog(@”….. %d ….”, sum);


autoreleasepool{}

这是内存管理中对建立对象的释放机制,在{}中的对象只要调用 autorelease方法该对象就会被存储到autoreleasepool中
在程序结束前会对autoreleasepool中的所有对象进行内存释放

对于对象释放可参看内存管理篇:
http://blog.csdn.net/chenlongcreate/article/details/44684413

本语句在较早的版本中是这样使用的

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//code
[pool drain];

1 第一句表示建立一个对象自动释放池
2 第二句表示释放池中存储的所有对象所占用的内存空间
3 在两个句之间的code相当于{}中写的代码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值