以前的一片文章简单的介绍了OC的相关概述,从这篇开始咱们就开始学习OC的相关知识了,在学习以前,我的感受须要了解的其余的两门语言:一个是C/C++,一个是面向对象的语言(固然C++就是面向对象,不过这里最好仍是Java)。在干活以前,得先找到一个好工具,不过伟大的苹果公司已经给咱们准备好了一个开发利器:XCode。在这方面Google可能作的就差了点,其实在开发Android的人大部分人都喜欢用Eclipse,可是Eclipse的可视化编程的效果和XCode差的不是一个级别的。固然Google后来开发了一个AndroidStudio,反正我没用过,不知道效果怎么样,应该不怎么样,否则Eclipse仍是那么受欢迎。java
学习任何一门语言都是从HelloWorld开始的,这个是一个套路了,那么OC也不例外,咱们就从第一个HelloWorld开始,Xcode下载仍是很方便的,这里就不作太多的介绍了,咱们打开Xcode:点击新建一个Project:编程
咱们如今时学习OC,因此选择下面的OS X,而后选择命令行,点击下一步:框架
这个和Android就差很少了,第一个是项目名,第二个是组织者名称(企业开发就是公司的名称,我的开发就是我的的名字,这个值会在每一个代码中体现出来的,做用不大,能够忽略),第三个是组织者的惟一标识,和Android中应用的packagename,第四个就是选择开发语言,这里选择OC,不过他还有其余选项:函数
Swift,C++,C,因此说吧,Xcode仍是很强大的,并且超级方便,Eclipse中也是能够开发C/C++的,可是须要安装插件,感受用起来也不是很方便。工具
后面的工做就是选择文件夹了,简单。新建一个工程以后,咱们在左侧栏中能够看到项目的结果,其中main.m源文件是自动建立的。学习
* C语言的源文件拓展名为".c",OC的源文件拓展名为".m"
* main.m文件是咱们这个程序中的惟一一个源文件
* 编译器会将.m文件编译为.o目标文件,好比main.m编译成功后会变成main.o文件
spa
下面就来看一下代码:插件
// // main.m // 01_HelloWorld // // Created by jiangwei on 14-10-10. // Copyright (c) 2014年 jiangwei. All rights reserved. // //OC中使用#import导入一个头文件 //和#include<Foundation/Foundation.h>效果是相同的,可是仍是有区别的,后续会说明 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { //建立一个自动释放池 @autoreleasepool { //把"Hello,World!"字符串打印到控制台 //打印的时候是自动换行的 //OC语言中字符串用@""表示 //NS开头都是OC里面的命名习惯,须要区分,jobs成立的Next setp公司有关系 NSLog(@"Hello, World!"); //OC中经常使用的类型 NSInteger s = 10; //布尔类型 BOOL a = YES;//NO BOOL b = TRUE;//FALSE //OC中的字符串(不属于基本类型,是对象类型,是指针) NSString *str = @"jiangwei"; //%@打印一个字符串对象 NSLog(@"%@",str); //表示范围的结构体 //第一个参数是起始位置 //第二个参数是范围长度 NSRange rang = {1,3}; NSMakeRange(1,3);//等价于上面的一行代码 } return 0; }看到了吧,第一个HelloWorld程序都是main函数开始的,不过这个和C更像。。
来分析代码:命令行
#import <Foundation/Foundation.h>其中#import关键字是用来导入头文件的,相似于C中的#include,不过他们两仍是有区别的,后面的例子中会说明,固然这个和Java中的import关键字效果差很少,不过OC不是开源的,因此,只能导入头文件,咱们也只能看到头文件中的定义,是看不到源码的,可是Java中点击就能够查看源码了,这个苹果就没Google好了。。
这里的Foundation.h头文件是系统提供的最基本的框架,后面咱们仍是能够本身开发框架的,这个就和C语言中的stdio.h效果相似,是系统给咱们提供了一个最基本的开发库。咱们按住Command键(功能和Window中的Ctrl同样的),单击就能够查看Foundation.h中的全部定义了:指针
(若是咱们想回去的话,能够点击control+command+左右箭头,这个相似于Eclipse中的Alt+左右箭头)
其实它内部全是导入头文件的代码,而这些头文件就是组成这个系统框架的基础,咱们后面的学习就是一个一个来学习的。
接着看代码:
//建立一个自动释放池 @autoreleasepool { //把"Hello,World!"字符串打印到控制台 //打印的时候是自动换行的 //OC语言中字符串用@""表示 //NS开头都是OC里面的命名习惯,须要区分,jobs成立的Next setp公司有关系 NSLog(@"Hello, World!"); //OC中经常使用的类型 NSInteger s = 10; //布尔类型 BOOL a = YES;//NO BOOL b = TRUE;//FALSE //OC中的字符串(不属于基本类型,是对象类型,是指针) NSString *str = @"jiangwei"; //%@打印一个字符串对象 NSLog(@"%@",str); //表示范围的结构体 //第一个参数是起始位置 //第二个参数是范围长度 NSRange rang = {1,3}; NSMakeRange(1,3);//等价于上面的一行代码 }
这里有一个知识点就是自动释放池概念,这里咱们就不太深刻介绍了,后面会有专门的一篇文章去介绍他,由于他是OC语言的一个特点,并且也是最难理解的一个知识点,他和Java中的垃圾回收器差很少。咱们在建立一个工程的时候,这个自动释放池的代码会自动建立的,咱们只要在这个池子中写咱们的代码就能够了。
NSLog(@"Hello, World!");这句和C中的printf同样,以及Java中的System.out.println效果都是同样的,打印结果,不过他和printf更像,由于他支持格式化输出。
在看一下OC中的一个很重要的对象是字符串,并且咱们在定义字符串对象的时候,要加@符号,这个和Java是有区别的,不过还有其余方式去建立字符串的,效果和Java很想,好比用构造方法去建立。后面会介绍
//OC中的字符串(不属于基本类型,是对象类型,是指针) NSString *str = @"jiangwei";
使用NSLog打印对象,用格式化输出,占位符是%@,打印字符串的对象的时候,输出的是字符串的值,这个和Java中的System.out.println输出结果同样,其实就是调用对象的toString方法,固然OC中也是会调用一个方法的,后面会说。
//%@打印一个字符串对象 NSLog(@"%@",str);
好了,到这里一个HelloWorld就介绍完了。
了解了OC中的定义变量方法,打印信息方法,基本类型等知识点。点击Xcode左上角的运行按钮:
咱们能够看到运行结果了,同时右上角的那几个按钮,就是选择开启四个方向上的窗口,屡次点击就知道功能了。