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

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

 1 #import <Foundation/Foundation.h>
 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语言的printf函数一样支持格式符

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语言的#include类似,都是 包含(拷贝)某个文件的内容 到 预处理指令所在的位置。

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

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

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

3> 在C语言专题的第三讲说 过:.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/tlios/p/4071435.html

学习笔记之04-第一个OC程序解析相关推荐

  1. 【DOTS学习笔记】从第一个Jobs程序入门

    目录 前言 Unity Jobs System C# Jobs Systems Blittable Types VS Non-Blittable Types NativeContainers Nati ...

  2. 【区块链2.0 以太坊学习笔记1】第一个solidity程序与整型/bool型基本运算

    Hint:此系列学习笔记为准备毕设期间学习记录所书,有任何疑问,欢迎一起讨论 学习资料及工具推荐 Solidity IDE Remix(在线浏览器编辑器) 关于此在线ide的使用介绍,可以参考这里 B ...

  3. python定义二进制变量_Python学习笔记一:第一个Python程序,变量,字符编码与二进制,用户交互程序...

    第一个python程序 Windows:设置环境变量,X:\pthonxxx,xxx是版本号 在命令提示符下 输入python,进入解释器 >>>print("Hello ...

  4. 【Objective-C】01.第一个OC程序解析

    1.     第一个oc语言程序  1 #import <Foundation/Foundation.h> 2 3 int main(int argc, const char * argv ...

  5. Django学习笔记(一):第一个django程序

    1.创建和运行 django-admin startproject xxx python manage.py runserver 2.第一个项目程序 wsgi.py 中文名:python服务器网关接口 ...

  6. JPA学习笔记---JPA理解---第一个JPA程序

    1. a.JPA和Hibernate是sun提出的java持久化的规范.JPA是Hibernate,和TopLink,JDO等ORM框架 基础上发展而来的. b.和jdbc类似,比如刚刚没有jdbc的 ...

  7. IOS学习笔记04---编写第一个C语言程序-Hello World

    IOS学习笔记04---编写第一个C语言程序-Hello World --------------------------------------------------------         ...

  8. IOS开发——01_第一个OC程序

    本文目录 一.新建Xcode项目 二.运行项目 注:建议先学习C语言, 如果你还没有编程经验,看不懂的地方可以在评论区提出,本文使用的为Xcode6.1版本,与之前版本会有所差异,但总体不变. 另:还 ...

  9. 第一个OC类、解析第一个OC程序

    01第一个OC 类 本文目录 • 一.语法简介 • 二.用Xcode创建第一个OC的类 • 三.第一个类的代码解析 • 四.添加成员变量 • 五.添加方法 • 六.跟Java的比较 • 七.创建对象 ...

最新文章

  1. return true Java_[Java教程]js中return,return true,return false的用法及区别
  2. css3效果: animate实现点点点loading动画效果(一)
  3. Jquery的动态创建DOM元素
  4. 北大计算机博进高校,他是北大第一位博士,留校任教却连做三件“傻事”,博导都没评上...
  5. 一个项目告一段落,终于可以回家过年了。
  6. Linux 命令(132)—— groupadd 命令
  7. 洛谷P2258 子矩阵——题解
  8. 农业银行网银兼容银河麒麟软件操作系统试点成功
  9. 【阙值分割】基于matlab遗传算法自适应多阈值图像分割【含Matlab源码 1460期】
  10. Java、JSP新华书店网上售书系统
  11. 五分钟内用Python实现GitHook
  12. iphone 自定义铃声制作
  13. RE|Nginx-安装与配置(1)
  14. 大学英语六级历年真题Word,PDF,和音频 下载
  15. 【开源教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解
  16. 随笔 2022年11月第二周
  17. linux下强制踢出普通用户
  18. 计算机带e的科学计数法,带e的科学计数法
  19. 西行漫记(6):Diversity
  20. The 'mode' option has not been set以及Can't resolve './src'解决方法

热门文章

  1. 只有IE能上网,其他浏览器均不可以!
  2. mysql select符合查询_MySQL SELECT 联合查询
  3. php set medias,manage-medias.php
  4. DataNode之文件系统数据集FsVolumeList
  5. (191)FPGA上电后IO的默认状态(Vivado软件默认为0)
  6. (08)System Verilog 类继承
  7. (47)FPGA面试技能提升篇(Aurora协议/接口)
  8. FPGA IIC总线协议简介
  9. Python基础-2 专用下划线标识符
  10. 27.Qt操作sqlite3数据库