博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Objective-C】04-第一个OC程序解析
阅读量:7021 次
发布时间:2019-06-28

本文共 1775 字,大约阅读时间需要 5 分钟。

说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,或者对Objective-C、iOS开发不感兴趣,请忽略。学习本专题之前,建议先学习专题。

在上一讲,已经新建了,这讲就来解析它内部的代码。

查看项目结构可以发现这个程序中只有一个源文件:main.m

打开main.m文件,代码如下

1 #import 
2 3 int main(int argc, const char * argv[]) 4 { 5 6 @autoreleasepool { 7 8 // insert code here... 9 NSLog(@"Hello, World!");10 11 }12 return 0;13 }

1.程序的入口点:main函数

跟C程序一样,OC程序的入口点依然是main函数。在main.m的第3行已定义了一个main函数。

 

2.@autoreleasepool

在Java中,有垃圾回收机制,系统会自动回收不再使用的对象;而OC是不支持垃圾回收的,需要开发人员编写代码来释放对象所占用的内存。在第6行有个@autoreleasepool{},这是跟内存管理有关的,暂时不用理解它的意思,你只需要记住:以后的OC代码都写在@autoreleasepool的{}内部。

 

3.NSLog

1> 第9行的NSLog是一个日志输出函数,它可以将传入的OC字符串参数输出到控制台上。

2> 函数参数@"Hello, Wolrd!"是一个OC字符串,并不是C语言字符串,所有OC字符串的前面都有个@。

3> 第9行代码NSLog(@"Hello, World!");的输出结果是:

红框左边的信息是NSLog自动加上去的,比如日志输出时间、项目名称等。而且NSLog输出完毕后自动换行。

4> NSLog也可以像C语言的一样支持格式符

1 int age = 10;2 NSLog(@"My age is %i and height is %.2f", age, 1.55f);

* %i表示接收整型数据

* %f表示接收浮点型数据,%.2f表示保留2位小数

* 输出结果:

2013-04-06 17:43:07.380 第一个OC程序[693:303] My age is 10 and height is 1.55

 

4.#import

1> #import是一个预处理指令,作用跟C语言的类似,都是 包含(拷贝)某个文件的内容 到 预处理指令所在的位置。

2> 第1行的#import <Foundation/Foundation.h>表示包含Foundation框架中的Foundation.h文件。

1) Foundation框架中包含了很多常用的类和函数,比如字符串处理类NSString、日志输出函数NSLog。它的重要程度相当于Java中的java.lang.*

2) Foundation框架和Foundation.h文件的位置:

3> 我在的说过:.h称为头文件,一般用来声明一些函数,想要使用这些函数,就必须用#include包含函数所在的头文件。我们在第9行中使用的NSLog函数存在于Foundation.h文件中,因此要先包含Foundation.h文件才能使用NSLog函数。就好像在Java中,你用import关键字引入一个类后才能正常使用这个类。

4> 在C\C++中,我们用#include来包含头文件,缺点就是同一个头文件可能被包含多次。为了解决这个问题,一般会这样写头文件:

#ifndef _TEST_H_#define _TEST_H_/*.....*/#endif

我们在OC中,就使用#import来包含头文件,优点是可以自动防止同一个头文件被包含多次。

5> #import <...>表示包含系统自带的文件,#import "..."表示包含开发人员自己创建的文件

 

 
 

转载于:https://www.cnblogs.com/fgcs/p/4744273.html

你可能感兴趣的文章
对症治疗过敏性鼻炎,依巴斯汀比氯雷他定更有效
查看>>
iOS 多线程 GCD part3:API
查看>>
UITableView UITableViewCell
查看>>
H5 Notes:Navigator Geolocation
查看>>
P2------总结
查看>>
A题笔记(3)
查看>>
Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
java 初始化字段(翻译自Java Tutorials)
查看>>
andorid 帧布局
查看>>
php 数组2
查看>>
c++和java字节高低位的转换
查看>>
XNA Game Studio4.0 Programming 随便读,随便记。
查看>>
用python实现字符串的替换
查看>>
统计vs机器学习,数据领域的“少林和武当”
查看>>
WCF概念
查看>>
用ChemDraw画3D图的方法
查看>>
上拉电阻大小对i2c总线的影响
查看>>
canvas绘图详解-04-矩形
查看>>
测试管理012:结对测试 - 不错的测试实践
查看>>
FusionCharts简单教程(二)-----使用js加载图像和setDataXML()加载数据
查看>>