前言
这是一份学习OC的记录,同时也是方便监视自己学习OC。
本次学习基于《Objective-C程序设计 第六版》,这份记录里的内容可能和书里差不多,所以不要指望有什么高深的东西。
内容
Objective-C简介
我也就不多BB了,就这么介绍吧:Objective-C是一门面向对象的编程语言,由C语言改进而来,是iOS和Mac OS开发必须使用的语言。
基本操作
这个就不讲了,看书就好,毕竟不是面向纯小白的教程。总而言之,本教程的编程均在Xcode的环境下输入代码。(假设你懂的)
第一个代码
和学习C一样,学习OC的第一个代码自然也是Hello World了。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
}
return 0;
}
我们来分析下这串代码并对比一下和C有和不同。
首先是#import<Foundation/Foundation.h>
学过C的肯定就认为这和#include<stdio.h>
相似。
那么问题来了,既然是OC是根据C改进的,那么#import
和#include
有什么区别?
答案是:#import
是#include
的升级版,#import
避免了重复引用的问题。
还要说的一点是<Foudation/Foundation.h>,这是一个系统文件,后面要学习的Foudation构架就是讲的这个文件。
接着就是int main(int argc, const char *argv[])
这里和C的main函数就差不多了,对于这个函数,记住以下几点:
- int代表函数返回值的类型
- main函数有且只有一个
然后就是@autoreleasepool
字面意思就是自动释放池,其机制就是:使得应用在创建新对象时,系统能够有效地管理应用所使用的内存。
这个我也不敢说太多,详情必须要学到后面才知道。我就根据我的经验来解释一下这句话:在开发过程中,有些对象的创建会占用大量的内存,有了这个autoreleasepool之后,一般情况下,是能比较安全地在对象使用后会释放掉内存。与之相对的,还有手动管理内存。
实际上,你不输入这个东西,这个代码也能运行。
还有就是NSLog(@"Hello world")
此处的NSLog()
就和C中的printf()
类似了,不过通过字面的意思,可以发现NSLog除了有打印功能以外,还有显示日志的功能,比如显示时间。
最后就是return 0
了
既然函数的返回值是int,我们就要在函数运行的后面返回一个int值以结束函数了。
本期就到此结束了,之后还有第一期的书后练习补充。