Objective-C路成魔【2-Objective-C 规划】
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。
假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^
我要捐赠:
点击捐赠Cocos2d-X源代码下载:点我传送
编译执行Objective-C程序有两种主要方式:
1、Xcode集成开发环境。
2、使用GNU Objective-C编译器的Terminal命令行窗体。
使用Xcode
XCODE和iOS SDK下载地址:
当然也能够从App Store里面下载。
当然,你须要创建一个开发人员账号,只是临时是不须要的。
Objective-C源文件使用.m结尾。.m也就是扩展名。
Objective-C++是C++的扩展。类似于Objective-C是C的扩展。
A、使用Xcode创建新程序的操作步骤:
1、启动Xcode应用程序。
2、假设开发新项目。选择File->New->New Project...,或者在起始页选择Create a New Xcode Project。
3、选择应用程序类型,选择Application->Command Line Tool(刚開始学习。就不搞什么图形界面了先。这个和C语言差点儿相同),然后Next。
4、为应用程序取一个名称,而且将Type设置为Foundation。确定Use Automatic Reference Counting复选框已经选中(这个是为了使用新的特性,即ARC),单击Next。
5、选择项目文件夹的名称,还能够选择在哪个文件夹中存储项目文件,然后点击Create。
6、在左上窗格中会看到文件main.m(在与项目名同名的目录下能够找到),突出显示该文件(就是单击那个文件)。在该窗体以下的编辑窗体中输入或编辑你的程序。
7、在工具栏中,选择位于View下方中间的图标,将显示调试区域。在这个区域会将显示输出结果。
l
8、在工具栏中点击Runbutton。或者从Product菜单中选择Run,编译并执行程序。
如图示:
B、使用Terminal命令行敲代码的操作步骤:
1、打开Terminal。
2、选择你的工作(project)文件夹。假设没有:
$mkdir test
进入工作文件夹
$cd test
新建并编辑,
$vi main.m
VI的使用,请參考下面链接:
http://en.wikipedia.org/wiki/Vi
输入你的第一个Program:
// My first Program
#import <Foundation/Foundation.h> int main(int argc, char *argv[]){
@autoreleasepool{
NSLog(@"Hello World!");
}
return 0;
}
3、编译,编译链接器使用clang的LLVM Clang Objective-C。这个和Linux下的GCC使用差点儿相同。大家不会的话,能够看看GCC那套编译。
$clang -fobjc-arc -framework Foundation main.m -o test
4、执行。这个和Linux是一样的编译的可执行文件前面加上“./”。也能够把project文件夹加到PATH中(这样就能够不要"./"),一般不是必需。
$./test
5、输出结果就会显示在命令行中。
须要注意的一点是:Objective-C是大写和小写敏感的。也就是说区分大写和小写。所以写代码的时候注意这点。
具体解释:
a、凝视:使用//或者/* ... */
b、#import:告诉编译器找到并处理名为Foundation.h文件, 这是一个系统文件;
#import表示将该文件的信息导入到程序中。
在C和C++中採用 #include指令, 在本例中也能够採用#include。
而#import是#include改进指令。 它能够防止头文件反复包括问题;
c、int main(int argc, const char * argv[]) , 这种方法是程序的入口 。
參数argc-參数数目 , argv-參数值
d、@autoreleasepool自己主动释放池:它使得应用在创建新对象时。系统可以有效地管理应用所使用的内存。
或者使用以下的方式:
// First program example
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool =
[[NSAutoreleasePool alloc] init];
// insert code here...
NSLog(@"Hello World!");
[pool drain];
return 0;
}
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]
语句是创建一个自己主动释放内存池对象, 使用它来维护内存释放和回收。
当中alloc方法是分配内存。 init方法是初始化类, 相当于C++或Java的构造方法作用。
[pool
drain]语句是用来释放内存池, 它将纳入到这个内存池中管理的对象内存所有释放掉,
关于NSAutoreleasePool问题我们将在内存管理部分具体讨论。
e:NSLog:oc库函数,只显示或记录其參数,还能显示变量。使用%i。
NSLog是Foundation框架提供的Objective-C日志输出函数。
与标准C中的printf函数类似, 并能够格式化输出。
@“Hello, World!”, 常量NSString对象,是代表NSString字符串对象, 它是Objective-C经常使用的字符串类。
f:retrun 0:程序正常退出。
它表示要终止main的运行, 普通情况下0代表正常结束, 非0代表异常情况。
这是沿用了C语言的习惯。
Objective-C代码的文件扩展名
版权声明:本文博主原创文章,博客,未经同意不得转载。
Objective-C路成魔【2-Objective-C 规划】的更多相关文章
- Objective-C路成魔【18-复制对象】
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意.重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 将一个变量 ...
- Objective-C路成魔【11-多态性、动态类型和动态绑定】
郝萌主倾心贡献.尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠.支持郝萌主.捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 多态这个其 ...
- 百度ios 开发面试题
百度移动云可穿戴部门的面试经历,面试官都非常热情友好,一上来到弄的我挺不好意思的.下面记录一下自己的面试过程,因为我真的没啥面试经验,需要总结下. 1面 Objective C runtime lib ...
- iOS面试3
转:http://studentdeng.github.io/blog/2014/02/11/baidu-interview/ 百度面试 FEB 11TH, 2014 | COMMENTS 百度移动云 ...
- words2
餐具:coffee pot 咖啡壶coffee cup 咖啡杯paper towel 纸巾napkin 餐巾table cloth 桌布tea -pot 茶壶tea set 茶具tea tray 茶盘 ...
- Evolutionary Computing: multi-objective optimisation
1. What is multi-objective optimisation [wikipedia]: Multi-objective optimization (also known as mul ...
- java-7311练习(上)
java练习,仅供参考! 欢迎同学们交流讨论. JDK 1.8 API帮助文档 JDK 1.6 API中文文档 Java GUI -------------------------2016-10-23 ...
- 学习ios(必看经典)牛人40天精通iOS开发的学习方法
学习ios(必看经典)牛人40天精通iOS开发的学习方法 描述 这是一套从一个对iOS开发感兴趣的学员到iOS开发高手的系统.专业的课程体系.以培养企业开发真正需要的人才为目标,每个知识点都用案例来讲 ...
- 【原创】Mac os 10.10.3 安装xgboost
大家用的比较多的是Linux和windows,基于Mac os的安装教程不多, 所以在安装的过程中遇到很多问题,经过较长时间的尝试,可以正常安装和使用, [说在前面]由于新版本的Os操作系统不支持op ...
随机推荐
- 开启本地MySql数据库远程连接
解决MySQL不允许从远程访问的方法 开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 33 ...
- 【Android UI】案例03滑动切换效果的实现(ViewPager)
本例使用ViewPager实现滑动切换的效果.本例涉及的ViewPager.为android.support.v4.view.ViewPager.所以须要在android项目中导入android-su ...
- mybatis配置文件xxxx.xml中缺失返回类型的后果A query was run and no Result Maps were found
使用mybatis时出现异常问题: 有如下的错误 Error querying database. Cause: org.apache.ibatis.executor.ExecutorExcepti ...
- 理解cookie的path和domain属性(转)
今天在做验证码时发现一个问题:A.B窗口都打开同一个页面,A先生成一个验证码,B再生成验证码,这时A所生成的验证码被B覆盖掉了.原因是使用了同名的cookie来存储验证码.一时找不到解决方法就参考了W ...
- [置顶] 如何vs在cocos2dx项目中打印中文
一开始不是很理解,查了半天资料,终于找到解决方法,但是有部分中文还是不能打印出来,如 会出现部分的中文, 一开始都是问号的解决方法是 点击高级保存选项 设置成Unicode(UTF-8无签名) 这样就 ...
- 编译gRPC
编译gRPC 目录 一.概述 二.编译gRPC 三.C#中使用gRPC 四.C++中使用gRPC 无论通过哪种语言调用gRPC,都必须要编译gRPC,因为生成proto访问类时,除了产生标准的数据定义 ...
- tarjan算法(割点/割边/点连通分量/边连通分量/强连通分量)
tarjan算法是在dfs生成一颗dfs树的时候按照访问顺序的先后,为每个结点分配一个时间戳,然后再用low[u]表示结点能访问到的最小时间戳 以上的各种应用都是在此拓展而来的. 割点:如果一个图去掉 ...
- KMP求字符串最小循环节
证明1: 对于一个字符串S,长度为L,如果由长度为len的字符串s(字符串s的最小循环节是其本身)循环k次构成,那么字符串s就是字符串S的最小循环节 那么字符串有个很重要的性质和KMP挂钩,即 i ...
- git 仓库
从 Git 删除文件 rm test.txt git rm test.txt 加入远程仓库 $ git remote origin $ git remote add pb git://github.c ...
- Sencha Architect 2 的使用
俗话说的好, 工欲善其事必先利其器, 用Sencha开发的语言, 自己可能不太熟悉, 写出来很麻烦, 于是给大家介绍一个工具. 启动程序第一个界面: 单击第一个Go按钮, 创建一个项目.进入以后, 单 ...