一、小桥对OC仅有的了解
众所周知贝尔实验发明了C语言,作为一种接近底层的语言,大大方便了程序的设计。而C语言是面向过程的,基本给了它一个定位!而面向对象作为对现实世界的抽象,易理解,易编写,极大地方便编程解决现实问题,于是产生了后来的许多高级语言,Java,C++。OC作为C的面向对象的补充,也是这样产生的。可以说,C++和OC是对C面向对象拓展的两个流派,是两种不同的思维模式。
OC是在乔帮主推出革命性产品Iphone4流行起来的,一度超过了C++的排名,仅次于C和Java!二、Hello world!
学习一种语言我们总是从输出Hello world!两个单词开始,这似乎成为了一种固定习惯,小桥在学习李明杰老师的OC课程的时候第一个程序也是输出它们。
为方便起见,在写本文的时候小桥在终端下建立文件,编译,链接,运行等操作换在了集成环境Xcode中,由于Mac系统为Lion 10.7.5所以用的是4.6.3。
打开Xcode新建一个projetc ,名字为 第一个OC程序 ,再选择控制台程序(windos下是这么叫的)。在Xcode中就会看到一个main.m文件,小桥知道C的源文件拓展名为.c,C++的为.cpp,这里通过李明杰老师的讲解,小桥明白OC的代码源文件拓展名为.m,所以main.m就是OC的源文件了。打开它,就能看到Xcode自动添加的代码,如下
//
// main.m
// 2
//
// Created by 葬花 桥 on 14-4-22.
// Copyright (c) 2014年 itcast. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSLog(@"Hello, World!");
}
return 0;
}
小桥不知道OC中的autoreleasepool是什么,所以我删掉写了自己的代码:
//
// main.m
// 第一个OC程序
//
// Created by 葬花 桥 on 14-4-22.
// Copyright (c) 2014年 itcast. All rights reserved.
//
#import <Foundation/Foundation.h>
int main()
{
NSLog(@"Hello, World!");
return 0;
}
Run一下,在输出中看到了熟悉的 Hello,World!激动ing。
这里小桥就所学的知识讲解下代码,毫无疑问上面的是注释,#import与C中的#include类似,拷贝别处的代码过来,但是它多了一个功能。学过C或C++的都知道在多文件联合编译的项目中,为了防止头文件中的函数声明或者类声明被多次包含,头文件中总是加入预处理指令
#ifnde XXX_H
#define XXX_H
类声明或函数声明代码;
#endif
而OC中的#import 不仅有#include的功能,还能自动防止多次包含文件,所以OC中包含头文件,在头文件中不用加入上面的指令。
main函数是程序入口,与C和C++一样不多说,再来说下NSLog函数。在C中输出主要用到的是库函printf,C++中用的是cout,没错,OC中用的是NSLog,与C不一样的是,OC语法中的字符串前面要加上@符号,更人性化的是NSLog函数会输出调试日志信息,在输出完字符串后还会自动回车换行,而不用像C中那样加入回车换行符\n!
三、OC与C的兼容性
OC完全兼容C代码,也就是说在.m源中可以写C的代码而编译完全没有问题。小桥对老师说的也试验了下,把上面的代码修改为如下:
// main.m
// 第一个OC程序
//
// Created by 葬花 桥 on 14-4-22.
// Copyright (c) 2014年 itcast. All rights reserved.
//
#include <stdio.h>
int main()
{
//NSLog(@"Hello, World!");
printf("Hello,World!");
return 0;
}
//
// love.h
// 第一个OC程序
//
// Created by 葬花 桥 on 14-4-22.
// Copyright (c) 2014年 itcast. All rights reserved.
//
void love();
//
// love.c
// 第一个OC程序
//
// Created by 葬花 桥 on 14-4-22.
// Copyright (c) 2014年 itcast. All rights reserved.
//
#include <stdio.h>
void love()
{
printf("I love you OC!");
}
main.m中修改代码为:
//
// main.m
// 第一个OC程序
//
// Created by 葬花 桥 on 14-4-22.
// Copyright (c) 2014年 itcast. All rights reserved.
//
#import "love.h"
int main()
{
love();
return 0;
}
Run下,程序输出了I love you OC!以上就是小桥对老师说OC完全兼容C做的验证!
好了,和OC的初次见面就写到这里!