Objective-C基础知识
1.Objective-C是C语言的一个扩展集。Objective-C以C语言为基础,在该语言中添加了一些微妙但意义重大的特性。
2. Xcode的.m拓展名表示文件含有Objective-C代码,应由Objective-C编译器处理。C编译器处理名称以.c结尾的文件,而C++编译器处理.cpp文件。在Xcode中,所有这些编译工作全由GNU编译器集合处理,这个编译器能够理解C语言的全部3个变体。
3. Objective-C本质上就是C语言。
4. Objective-C使用头文件来包含元素声明,这些元素包括结构体、符号常量、函数原型等。C语言使用#include来实现这个目的。
5. #import <Foundation/Foundation.h>,#import是GCC编译器提供的,Xcode在编译Objective-C、C和C++程序时都会使用它。#import可保证头文件只被包含一次,而不论此命令实际上在那个文件中出现了多少次。
6. #import <Foundation/Foundation.h>语句告诉编译器查看Foundation框架中Foundation.h头文件。
7. 框架是一种聚集在一个单元的部件集合,包含头文件、库、图像、声音文件等。苹果公司将Cocoa、Carbon、QuickTime和OpenGL等技术作为框架集提供。
8.Cocoa的组成部分有Foundation和Application Kit(也称为AppKit)框架。还有一个支持框架的套件,包含Core Animation和Core Image,这为Cocoa增添了多种精彩功能。
9. Foundation框架处理的是用户界面之下的层中的特性,例如数据结构和通信机制。
10. 每个框架都是一个重要的技术集合,通常包含数十个甚至上百个头文件,每个框架都有一个主头文件,它包含了所有框架的各个头文件。通过使用#import导入主头文件,可以使用所有框架的特性。
11.Foundation框架的头文件占用了近1MB的磁盘存储空间,包含一万四千多行代码,涵盖一百多个文件。使用#import<Foundation/Foundation.h>包含主头文件,就能够获得整个集合。也许你认为辛苦的读取每个文件的全部文本会好去编译器很多时间,但是Xcode非常聪明:它会使用预编译头文件(一种经过压缩的、摘要形式的头文件),在通过#import导入这种文件时,加载速度会非常快。
12. Objective-C只是增加了一点"特殊调料"的C 语言,所以可以用printf()代替NSLog().但是我们建议使用NSLog(),因为它增加了特性,例如时间戳、日期戳和自动换行符('\n')等
13。"NS"前缀的来历要追溯至此工具包还被称为NextSTEP,而且是NeXT Software公司(前NeXT公司,于1996年被苹果公司收购)产品的时候。
14. @符号是Objective-C在标准C语言基础上添加的特性之一。双引号中的字符串前有一个@符号,这表示引用的字符串应该作为Cocoa的NSString元素来处理。
15. C语言拥有布尔类型bool,它具有true值和false值。Objective-C提供了相似的类型BOOL,它具有YES值和NO值。Objective-C的BOOL类型比C语言的bool类型早诞生十多年。这两种不同的布尔类型可以在同一个程序中共存,但在编写Cocoa代码时要使用BOOL。
16. NSLog()本质上就是Cocoa中的printf()函数,它接受一个格式字符串,并将后续参数的值插入到这个格式说明符中。printf()不能使用NSString,所以没有我们能够使用的格式说明符。NSLog()编写者添加%@格式说明符,是为了通知NSLog()接受适当的参数,将其作为NSString,在使用该字符串中的字符,并将其发送到控制台。
17. 因为Objective-C是C语言的超集,所以C语言写的东西可以再Objective-C语言中可以运行,但是Objective-C有自己的类型,虽然和C语言中的类型重复,但是都加以区别,例如有的类型加了前缀NS,在如C语言中的布尔类型是bool,而在Objective-C中是BOOL,值为YES和NO。
18.Objective-C中YES的值为1,NO的值为0,不和C语言中的一样,即非0即为真。
19.在开发中会看到很多类似NS的前缀例如: CF说的是Core Foundation,CA说的是Core Animation,CG说的是Core Graphics,UI说的是iPhone的User Interface……还有很多别的,等你自己去发掘了。
20. C语言中的输出控制符包含:
%d —— int
%ld —— long int
%c —— char
%f —— float
%lf —— double
%x(或者%X或者%#X) —— int或long int或short int
%o —— 同上
%s —— 字符串
%p —— 指针
21. 在Objective-C只要看到@符号,都可以看成是C语言的扩展
22. Objective-C类的源代码分为两部分。一部分是接口(interface),用来提供类的公共描述。接口包含了所有使用该类所需的信息。编译器编译@interface部分后,就能够使用该类的对象,调用类方法,将对象符合到其他类中和创建子类。类的源代码的另一个组成部分是实现(implementation)。@implementation部分告诉Objecitve-C编译器如何让类工作。这部分代码实现了接口中声明的方法。