OC学习篇之---第一个程序HelloWorld
从这篇开始我们就开始学习OC的相关知识了,在学习之前,个人感觉需要了解的其他的两门语言:一个是C/C++,一个是面向对象的语言(当然C++就是面向对象,不过这里最好还是Java)。在干活之前,得先找到一个好工具,不过伟大的苹果公司已经给我们准备好了一个开发利器:XCode。在这方面Google可能做的就差了点,其实在开发Android的人大部分人都喜欢用Eclipse,但是Eclipse的可视化编程的效果和XCode差的不是一个级别的。当然Google后来开发了一个AndroidStudio,反正我没用过,不知道效果怎么样,应该不怎么样,不然Eclipse还是那么受欢迎。
学习任何一门语言都是从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文件
下面就来看一下代码:
- //
- // 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 charchar * 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);
其他就是OC中的基本类型了,这里就不做介绍了。
好了,到这里一个HelloWorld就介绍完了。
了解了OC中的定义变量方法,打印信息方法,基本类型等知识点。点击Xcode左上角的运行按钮:
我们可以看到运行结果了,同时右上角的那几个按钮,就是选择开启四个方向上的窗口,多次点击就知道功能了。
OC学习篇之---第一个程序HelloWorld的更多相关文章
- (转载)OC学习篇之---第一个程序HelloWorld
之前的一片文章简单的介绍了OC的相关概述,从这篇开始我们就开始学习OC的相关知识了,在学习之前,个人感觉需要了解的其他的两门语言:一个是C/C++,一个是面向对象的语言(当然C++就是面向对象,不过这 ...
- OC学习篇之---总结和学习目录
今天终于把OC的基础知识学习完了,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.下面就是这次学习OC的目录教程,如果大家发现有什么不正确的地方,请指正,小弟是新生 ...
- OC学习篇之---单例模式
在之前的一片文章中介绍了对象的拷贝相关知识:http://blog.csdn.net/jiangwei0910410003/article/details/41926531,今天我们来看一下OC中的单 ...
- Go 基础学习笔记(3)| 第一个程序 “helloworld”
//第一个程序总要说的清楚才行. //建议先运行起第一个程序实践后,再看后面的具体解答 一.helloworld 编写运行 1.编写源程序,在 ~ /hello/src 编写hello.g ...
- (转载)OC学习篇之---类的定义
之前已经介绍了OC中的一个程序HelloWorld,今天我们继续学习OC中类的相关知识. OC和C的最大区别就是具有了面向对象的功能,那么说到面向对象,就不得不说类这个概念了,如果学过Java的话,那 ...
- (转载)OC学习篇之---概述
前言 终于开启了OC的学习篇了,之前由于工作上的事,学习就一直搁浅了,不过最近由于各种原因,感觉必须要开启iOS的开发旅程了,不然就老了.因为之前一直是做Android的,所以学习iOS来就没那么费劲 ...
- 【 D3.js 入门系列 — 1 】 第一个程序 HelloWorld
记得以前刚上大一学 C 语言的时候,写的第一个程序就是在控制台上输出 HelloWorld .当时很纳闷,为什么要输出这个.老师解释说所有学编程入门的第一个程序都是在屏幕上输出 HelloWorld, ...
- OpenGL学习笔记1——第一个程序
学习的参考书基本是按照GL编程指南,如果有消息机制概念,对于GLUT的理解是很自然的.下面就按照自己写的第一个程序详细解释一下GL,还是比较容易上手的. 程序实现的功能是,根据当前随即种子摇出来的结果 ...
- Day01_05_Java第一个程序 HelloWorld - java类规则
第一个程序Hello World *基础语法规则: 1. 第一个Java程序 HelloWorld! public class HelloWorld{ public static void main( ...
随机推荐
- android图像处理系列之四-- 给图片添加边框(上)
图片处理时,有时需要为图片加一些边框,下面介绍一种为图片添加简单边框的方法. 基本思路是:将边框图片裁剪成八张小图片(图片大小最好一致,不然后面处理会很麻烦),分别对应左上角,左边,左下角,下边,右下 ...
- Docker+Jenkins持续集成
Docker+Jenkins持续集成 使用etcd+confd实现容器服务注册与发现 前面我们已经通过jenkins+docker搭建了基本的持续集成环境,实现了服务的自动构建和部署,但是,我们遇 ...
- 突破极限 解决大硬盘上安装Unix新思路
一.问题提出 硬盘越做越大,然我喜欢让我忧.10年前就遇到过在586电脑BIOS不认识超过8.4G容量硬盘的问题,以及Windows Nt操作系统不认大硬盘(容量超过8.4G)的问题,对于Linux ...
- JS实现下拉菜单的功能
<!DOCTYPE html> <html> <head> <meta charset = "utf8"> <title> ...
- UVALive 5292 Critical Links
Critical Links Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALive. Ori ...
- 洛谷 P1757 通天之分组背包
P1757 通天之分组背包 题目背景 直达通天路·小A历险记第二篇 题目描述 自01背包问世之后,小A对此深感兴趣.一天,小A去远游,却发现他的背包不同于01背包,他的物品大致可分为k组,每组中的物品 ...
- 智能指针shared_ptr, auto_ptr, scoped_ptr, weak_ptr总结
看这里: http://blog.csdn.net/lollipop_jin/article/details/8499530 shared_ptr可以多线程同时读,但是涉及到写,需要加锁. share ...
- 多线程编程(二)--进程&&线程
看完上篇博文的介绍后,大家应该大概了解进程和线程的由来.有了这样一个背景我们进一步来看一下线程和进程. 引入进程: 进程能够提高系统的并发性.提高CPU的使用率,从而提高程序的性能.在曾经单道操作系统 ...
- 缩放文本框ExpandTextView
效果图: 代码: import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import ...
- 一个令人蛋疼的NDK链接错误
背景 我们APP的引擎包engine.so.包括了A.B.C三个project.但每次都是源代码形式编译,导致svn上存在多份同样代码拷贝. 很不科学. ..核心的Bproject由我维护.整个SO编 ...