Objective-C(以下简称ObjC)是一门强类型语言,强类型包括了两方面的含义:第一,所有的变量必须先声明,后使用;第二,指定类型的变量只能接收类型与之匹配的值。

1.1 注释
程序注释是源代码的一个重要组成部分,对于一份规范的程序源代码而言,注释应该占到源代码的三分之一以上。

ObjC提供了单行注释和多行注释。单行注释就是在程序中注释一行代码,ObjC使用双斜线(//)进行单行注释;多行注释是指一次性将程序中的多行代码注释掉,ObjC使用“/”和“/”将程序中需要注释的内容包含起来,“/”表示注释开始,“/”表示注释结束。

需要注意的是,多行注释不能嵌套。也就是说,在“//”多行注释代码块哪,不能再次使用“//”添加多行注释。

1.2 标识符和变量
1.2.1 分隔符
ObjC里面的分隔符包括:分号(;),花括号({}),方括号([]),圆括号(()),空格,圆点(.)。

1.分号
ObjC使用分号(;)作为语句的分隔,也就是说,每个ObjC语句必须使用分号(;)作为结尾。

ObjC程序允许一行书写多个语句,每个语句之间用分号(;)分隔开来即可;一个语句也可以跨多行,只要在最后结束的地方使用分号(;)结束即可。

但要注意,ObjC语句可以跨越多行书写,但一个变量名和变量的值不能跨越多行。另外,从程序的可读性的角度出发,应该避免在一行书写多个语句。

2.花括号
花括号({})的作用是定义一个代码块。一个代码块指的就是“{”和“}”所包含的一段代码,其在逻辑上是一个整体。

在ObjC中,类的成员变量、方法体部分、条件语句中的条件执行体和循环语句中的循环体等都是放在代码块中的。

3.方括号
方括号([])的主要作用是用于访问数组元素,它通常紧跟数组变量名,在它里面指定希望访问的数组元素的索引。

此外,ObjC的对象调用方法时,通常也需要使用方括号括起来。

4.圆括号
圆括号(())的功能非常的丰富,它可以用在:定义函数、调用函数、强制类型转换等地方。

5.空格
ObjC使用空格分隔一个语句的不同部分。

ObjC源程序可以使用空格来合理缩进代码,从而提供更好的可读性。但是,不能使用空格将一个变量名隔开成为两个或多个,这将导致程序出错。

6.圆点(.)
圆点(.)通常作为对象及其属性之间的分隔符,表明调用某个实例的指定属性。

1.2.2 标识符规则
标识符是用于给程序中变量、类、方法命名的符号。

ObjC的标识符必须以字母、下画线(_)、美元符($)开头,后面可以跟任意数目的字母、数字、下画线和美元符。

ObjC的标识符中不可以包含空格,不能使用ObjC的关键字。ObjC是区分大小写的,也就是说,abc和abC是两个不同的标识符。

总结起来,使用标识符的规则如下:
第一,标识符可以由字母、数字、下画线和美元符组成,但不能以数字开头。

第二,标识符不能完全是ObjC关键字。

第三,标识符不能包含空格。

第四,标识符只能包含美元符,不能包含@、#等其它特殊字符。

1.2.3 ObjC关键字
ObjC中有一些具有特殊用途的单词被称为关键字(keyword),它们是专门为整个ObjC语言系统预留的。当定义标识符的时候,不要让它与关键字重名,否则将引起错误。

ObjC中常用的关键字包括:auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while。

1.3 示例程序
基于本文中所学习的内容,示例程序如下:

//
// main.m
// ex1
//
// Created by zhouzxi on 7/10/16.
// Copyright © 2016 Zhou Zhaoxiong. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
int iInt1, iInt2, iInt3; // 定义三个整型变量,中间使用逗号分隔
iInt1 = 2; // 对iInt1变量赋值为2
iInt2 = 7; // 对iInt2变量赋值为7
iInt3 = iInt2 / (iInt1+1); // 计算iInt3变量的值

NSLog(@"iInt1=%d, iInt2=%d, iInt3=%d", iInt1, iInt2, iInt3); // 打印三个变量的值

/*
// 下面两行代码被注释掉了
NSLog(@"Hello, World!");
NSLog(@"Hello, World!");
*/

}
return 0;
}