【Objective-C】04-第一个OC程序解析
说明:这个Objective-C专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序猿,可以高速上手Objective-C。假设你还没有编程经验,或者对Objective-C、iOS开发不感兴趣,请忽略。
学习本专题之前,建议先学习C语言专题。
在上一讲,已经新建了第一个OC程序,这讲就来解析它内部的代码。
查看项目结构能够发现这个程序中仅仅有一个源文件: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中,你用importkeyword引入一个类后才干正常使用这个类。
4> 在C\C++中,我们用#include来包括头文件,缺点就是同一个头文件可能被包括多次。为了解决问题,通常会这样写头文件:
#ifndef _TEST_H_
#define _TEST_H_ /*.....*/ #endif
我们在OC中,就使用#import来包括头文件,长处是能够自己主动防止同一个头文件被包括多次。
5> #import <...>表示包括系统自带的文件。#import
"..."表示包括开发者自己创建的文件
【Objective-C】04-第一个OC程序解析的更多相关文章
- 第一个OC类、解析第一个OC程序
01第一个OC 类 本文目录 • 一.语法简介 • 二.用Xcode创建第一个OC的类 • 三.第一个类的代码解析 • 四.添加成员变量 • 五.添加方法 • 六.跟Java的比较 • 七.创建对象 ...
- IOS开发——01_第一个OC程序
本文目录 一.新建Xcode项目 二.运行项目 注:建议先学习C语言, 如果你还没有编程经验,看不懂的地方可以在评论区提出,本文使用的为Xcode6.1版本,与之前版本会有所差异,但总体不变. 另:还 ...
- [OC笔记]我的第一个OC程序
这是我第一个OC程序,详情都写在了注释里面,讲的是Student和Book这两个类的创建和使用.(是不是觉得student这个类在各种语言入门代码里经常出现呢?真实有爱) 看完这些,你会发现,咱们其实 ...
- 手动创建第一个OC程序
手动创建第一个OC程序 创建一个文件夹,文件夹内创建一个a.m的OC源文件,并编辑 之前说过,OC是完全兼容C语言的,那么我们先写个下面的程序尝试一下 #include<stdio.h> ...
- 第一个OC程序
第一个OC程序源码如下: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @auto ...
- 【Objective-C】03-第一个OC程序
一.打开Xcode,新建Xcode项目 二.选择最简单的命令行项目 因为我们只是学习OC语法,还未正式进入iOS开发,所以选择命令行项目即可 三.输入项目名称,选择Foundation框架进行创建项目 ...
- 02第一个OC程序
一.打开XCode4.6.3,新建项目 二.选择Application下的命名行项目 三.输入项目名称,选择Foundation框架创建项目,点击Next 四.二话不说.点击Run.启动我们创建的项目 ...
- 我曾经的第一个OC程序
一. OC简介 C语言的基础上,增加了一层最小的面向对象语法 完全兼容C语言 可以在OC代码中混入C语言代码,甚至是C++代码 可以使用OC开发Mac OS X平台和iOS平台的应用程序 二. OC语 ...
- 05_传智播客iOS视频教程_第一个OC程序
Cocoa Application开发的是带界面的程序. OC是完全兼容C语言的,但是C语言里面是不能写OC的东西的. OC和C的第一个区别,就是源文件的后缀名的区别.OC程序的源文件的后缀名是.m, ...
随机推荐
- Docker管理面板Crane开源了!
导读 数人云容器管理面板 Crane 开源啦!Crane 包含着数人云工程师对 Docker 最新技术的热爱和实践.希望借助开源社区的力量,让 Crane 完善自身,更好地成长起来,让更多的国内用户体 ...
- 【原创】用python实现shell的tail操作
在工作过程中发现监控实时刷新文件时,不是那么的任性. 故结合shell中的tail,做了一个类似tail的python脚本. 详情如下: #!/usr/bin/env python #coding=u ...
- HDU5772 String problem 最大权闭合图+巧妙建图
题意:自己看吧(不是很好说) 分析: 网络流:最大权闭合子图. 思路如下: 首先将点分为3类 第一类:Pij 表示第i个点和第j个点组合的点,那么Pij的权值等于w[i][j]+w[j][i](表示得 ...
- node.js study: cluster
从v0.6.x开始,Node.js提供了多进程模块cluster,允许创建一组进程来共享同一个socket,并且分担负载压力.官方文档是这样说的:A single instance of Node.j ...
- 【九度OJ】题目1009-二叉搜索树
题目 思路 构建二叉搜索树,并保存先序遍历和中序遍历的序列在samplePreOrder,sampleInOrder 每遇到一个新的序列,构建一棵二叉搜索树,保存先序遍历和中序遍历的序列testPre ...
- sgu 194 Reactor Cooling(有容量上下界的无源无汇可行流)
[题目链接] http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20757 [题意] 求有容量上下界的无源无汇可行流. [思路] ...
- 详解 jupyter notebook 集成 spark 环境安装
来自: 代码大湿 代码大湿 1 相关介绍 jupyter notebook是一个Web应用程序,允许你创建和分享,包含活的代码,方程的文件,可视化和解释性文字.用途包括:数据的清洗和转换.数值模拟.统 ...
- HDU-4720 Naive and Silly Muggles 圆的外心
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4720 先两两点之间枚举,如果不能找的最小的圆,那么求外心即可.. //STATUS:C++_AC_0M ...
- XML学习笔记(1)--XML概述
XML基本概念 XML—extensible Markup Language(可扩展标记语言) XML最基本的三个概念 1)XML语言---描述事物本身(可扩展) 2)XSL语言---展现事物表现形式 ...
- delphi debug release区别是什么?
1. 基础知识介绍: Debug编译:是为了便于程序调试,所以目标代码里附加有许多额外的东西.Release编译:是产品可作为正式拷贝发布了,已经不需要那些仅为调试而编译进去东西. (在 Releas ...