本文所有的内容都来自Objective-c第二版书籍,进一步阅读请戳:
一、创建第一个Objective-C程序
Objective-C代码的文件,一般都是以.m结尾
二、#import和#include的区别
三、使用NSDate类,实现打印时间并计算当前时间距离1970年的秒数
NSDate类是属于Foundation框架中的。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSDate* now = [NSDate date];
NSLog(@"This NSDate object lives at %p", now);
NSLog(@"The Date is %@", now);
double seconds = [now timeIntervalSince1970];
NSLog(@"It has been %f seconds since the start of 1970.", seconds);
}
return 0;
}
command+r:运行快捷键
运行结果如下:
四、NSDate* now = [NSDate date];展开讲述
以上的代码称为消息发送,必须写在一对方括号中,并且必须包含接收方和选择器。
date方法执行后,NSDate类会在堆上给NSDate实例生命一部分内存,将NSDate实例初始化为当前日期/时间,然后返回新对象的地址。
NSLog()会先输出日期、时间、程序名称和进程ID。
%p:会输出对应对象的地址信息
%@:会输出相应对象的“描述信息”。
五、double seconds = [now timeIntervalSince1970];
为什么选择1970年?
因为OS X和iOS系统都是基于Unix开发的,而1970年正是“Unix时代”的开始。
六、Objective-c语言命名规范
OC语言是区分大小写的。
- 指向实例的变量使用“驼峰拼写法”,以小写字母开头,其他每个单词第一个字母需要大写。例如:now,weightLifter
- 方法的命名如同实例变量,例如:date,timeIntervalSince970
- 类的名称以大写字母开头,接下来的单词继续使用驼峰拼写法,例如:NSDate,NSMutableArray
一般来说,类的名称是要加前缀的,这样可以避免相似的类名造成混乱。
通过前缀还可以知道它是属于哪个框架的,Foundation框架的类使用NS前缀,NS是NEXTSTEP的简写。
七、练习
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSHost* host = [NSHost currentHost];
NSString* name = [host localizedName];
NSLog(@"my computer name is %@", name);
}
return 0;
}