一、关于Objective-C 与 C语言
Objective-C继承了C的全部功能,很好的利用了C语言可移植的特点,当然学习Objective-C需要熟练的掌握C
Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS
X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。
。
二、Objective-C基本语法
Objective-C在C语言的基础上增加面向对象,不仅兼容了C语言,同时又将C++的面向对象思想应用,但却不同与C++。
下面以C语言与Objective—C 代码为例:
C语言:
#include<stdio.h>
int mian()
{
printf("这是一段C程序代码\n");
return 0;
}
Objective-C:
#import<Foundation/Foundation.h>
int main()
{
NSLog(@"这是一段Objective-c程序\n");
return 0;
}
比较这两段程序,在Objective-C中程序开头使用的是#import语句,输出语句用的是NSLog(@"这是一段Objective-C程序\n");而为什么这么写呢?其实下面这段程序完全没有问题:
#include<stdio.h>
int main()
printf("这是一段Objective-C程序\n");
return 0;
}
因为Objective-C继承了C的全部功能,这段程序完全可以正确运行,那么为什么还要用#import而不用#include呢?由于#import是由Xcode使用的编译器提供的,Xcode在你编译Objective-C、C和C++程序时都会使用它,#import可保证头文件只被包含一次,无论此命令在该文件中出现多少次,那么这样就给程序员提供了更多便利。
再比较两段程序的输出语句分别使用了printf函数与NSLog函数,printf函数是由“stdio.h”提供的,而NSLog函数则是由Foundation框架下的Foundation.h 提供的,使用#import就可以访问Foundation框架内的所有功能。再来观察NSLog中的“@”,@符号是Objective-C相对于C语言的新特性之一,它意味着“ ”里面的内容将作为字符串来处理。
三、学习笔记
1.#import的用途
(1)和#include一样,拷贝文件的内容
(2)可以自动防止文件里的内容被重复拷贝
2.#import<Foundation/NSObjRuntime.h>
NSObjRuntime.h中有 NSLog函数的声明
3.Foundation框架头文件的路径
(1) 右击Xcode.app --->显示包内容
(2) Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/Foundation.framework
4.主头文件
(1) 主头文件:最主要的文件,名字一般跟框架名称一样包含了框架中的所有其他文件
(2) Foundation框架的主头文件名称就是Foundation.h
(3) 只需包含Foundation框架主头文件,就可以使用整个框架的东西
5.运行过程
(1) 编写OC源文件:.m、.c
(2) 编译:cc -c xxx.m xxx.c
(3) 链接:cc xxx.o xxx.o -framework Foundation
(只有用到了Foundation框架才需要加上 -framework Foundation)
(4) 运行:./a.out