1. OC历史简介:
1) 以后OC就作为Objective-C的简称了;
2) 大致经过:
i) 最早由Brad J.Cox创造,仅仅是对C语言进行了一定的扩展,因此具有C语言的特性,但很多语法基于SmallTalk,因此是面向对象的;
ii) NeXT公司获得OC授权,并发展出了OC的语言库和开发环境(该环境基于NEXTSTEP操作系统),该环境即为NEXTSTEP,简称NS;
iii) NeXT和Sun联合发布针对NEXTSTEP系统的标准规范OPENSTEP,从此该开发环境全称为NEXTSTEP/OPENSTEP,即OPENSTEP标准下的NEXTSTEP环境;
iv) NeXT被苹果收购,NEXTSTEP/OPENSTEP被苹果整合置自己的操作系统OS X中作为默认的开发环境,并改名为Cocoa(就相当于OS X的API了),并内置了对OC的支持,因此现在在写OC代码时经常会看到以NS打头的函数,这个就代表是原来NEXTSTEP框架中的函数;
2. 第一个Hello World程序:
1) 程序示例:
// main.m
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@"Hello, World!");
NSLog(@"fuck");
}
return 0;
}
2) 和C语言相通的一些基本特性:
i) 格式自由:空白符随意加;
ii) 注释方式://和/* */,其中后者不支持嵌套注释!
iii) 大小写敏感;
iv) 花括号框住一段代码块;
v) 语句以分号;结束(必须加分号!);
vi) 整个程序的入口函数main函数和C语言的定义也一模一样(包含命令行参数);
3) #import导入语句和C语言的#include功能一样,都是直接将头文件中的内容复制到原文件中(OC也是实现和声明分开的编程风格),也都是在与处理阶段进行导入;
4) Foundation/Foundation.h表示Foundation框架中的Foundation.h头文件,这样就可以使用Foudation框架中的NSLog函数了,框架中有很多苹果提供的功能(主要是一些分装了系统调用的函数,和微软的MFC功能类似);
补充:Cocoa框架就是Foundation框架和AppKit框架组成,用于编写OS X应用程序,而开发IOS应用程序的框架是Cocoa Touch框架,由Foundation框架和UIKit框架组成,可见Foundation是一种非常重要的基础框架;
5) @autoreleasepool { }表示自动释放池,可以自动管理池中动态创建的对象(面向对象中会起到作用,因为OC一开始和C++一样,也是需要程序员自己管理内存的,之后引入了Java那样的垃圾回收机制,但是由于OC一开始并没有垃圾回收的基础模块,因此就开发出了这种方式,即在自动释放池的范围内自动进行内存管理),避免内存泄漏,采用的方式也被沿用到了Swift中,即ARC自动引用计数;