手动创建第一个OC程序

创建一个文件夹,文件夹内创建一个a.m的OC源文件,并编辑

之前说过,OC是完全兼容C语言的,那么我们先写个下面的程序尝试一下

#include<stdio.h>

int main(){
printf("这是kongqw的第一个OC程序");
return 0;
}

运行

  • 编译,生产.o目标文件

    cc -c a.m
  • 链接,生成可执行文件

    cc a.o
  • 运行

    ./a.out

由上可见,OC与C语言是完全兼容的,OC的源文件也可以写C语言代码


下面再使用OC的语法输出一段文字

  • 编辑源文件


    #import <Foundation/NSObjCRuntime.h> int main(){
    NSLog(@"我是使用OC语法输出的一段文字");
    return 0;
    }
  • 编译源文件,生成.o目标文件

    cc -c a.m
  • 链接,生成.out可执行文件

    这里要格外注意一点,链接的时候要使用framework参数加入Foundation框架

    原因很简单,正常不加参数的时候,我们是写C语言代码,默认会给我们链接C的库,现在我们写的是OC的程序,OC给我们封装了很多他们自己的库,默认是不会给我们链接进去的,所以需要我们手动加入,如果不加,链接会报错,找不到链接

    cc a.o -framework Foundation

P3


以上都是一个源文件的情况,真正的项目中也不可能只有一个源文件,那么如果有多个源文件,我们怎么一起编译呢?

在这里,我们重新创建几个OC的源文件,如下

  1. 编辑

    • a.m 程序入口


      #import "b.h" int main(){
      funInB();
      return 0;
      }
    • b.m


      #import <Foundation/NSObjCRuntime.h> void funInB(){
      NSLog(@"调用了B里面的方法");
      }
    • b.h b的头文件

      void funInB();
  2. 编译

    cc -c a.m b.m
  3. 链接

    cc a.o b.o -framework Foundation
  4. 运行

    ./a.out

include与import的区别

区别很简单,C语言都是用include,OC添加的import,可以自动给我们去重,就不用我们再操心是不是include重复了,写OC程序就直接使用import就好了

技巧

以后我们写IOS的程序,工程肯定会很庞大,XCode给我们提供的了很多的框架,有很多很多的库,那么我们用到多少库就要import多少个库吗?

很显然不用,每个库有一个主头文件,命名与框架命名一样,例如:

#import <Foundation/Foundation.h>

手动创建第一个OC程序的更多相关文章

  1. [OC笔记]我的第一个OC程序

    这是我第一个OC程序,详情都写在了注释里面,讲的是Student和Book这两个类的创建和使用.(是不是觉得student这个类在各种语言入门代码里经常出现呢?真实有爱) 看完这些,你会发现,咱们其实 ...

  2. IOS开发——01_第一个OC程序

    本文目录 一.新建Xcode项目 二.运行项目 注:建议先学习C语言, 如果你还没有编程经验,看不懂的地方可以在评论区提出,本文使用的为Xcode6.1版本,与之前版本会有所差异,但总体不变. 另:还 ...

  3. 【Objective-C】04-第一个OC程序解析

    说明:这个Objective-C专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序猿,可以高速上手Objective-C.假设你还没有编程经验,或者对Objective-C.iOS开发 ...

  4. 第一个OC类、解析第一个OC程序

    01第一个OC 类 本文目录 • 一.语法简介 • 二.用Xcode创建第一个OC的类 • 三.第一个类的代码解析 • 四.添加成员变量 • 五.添加方法 • 六.跟Java的比较 • 七.创建对象 ...

  5. 第一个OC程序

    第一个OC程序源码如下: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @auto ...

  6. 【Objective-C】03-第一个OC程序

    一.打开Xcode,新建Xcode项目 二.选择最简单的命令行项目 因为我们只是学习OC语法,还未正式进入iOS开发,所以选择命令行项目即可 三.输入项目名称,选择Foundation框架进行创建项目 ...

  7. Windows Azure入门教学系列 (一): 创建第一个WebRole程序

    原文 Windows Azure入门教学系列 (一): 创建第一个WebRole程序 在第一篇教学中,我们将学习如何在Visual Studio 2008 SP1中创建一个WebRole程序(C#语言 ...

  8. 纯小白创建第一个Node程序失败-容易忽略的一个细节

    一直觉得自己基础还很差,所以自觉不敢去碰node.js,但又对其心怀好奇.恰巧最近有一点空闲时间,忍不住去试了一下水   这不,在创建第一个node程序时就吃了闭门羹,总是提示我没有定义,如下图, 这 ...

  9. “全栈2019”Java第四章:创建第一个Java程序

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. 学习HTML的第三次课

    浏览器的地址栏中有字数限制,大约为200个字符. 1.表单:<form action="" method=""></form> 属性: ...

  2. innerText、innerHtml与value

    1.innerText是id为object的闭合标签内的文本,输入输出的是转义文本(字符串);  (label控件用innerText有效)2.innerHtml是<div>标签内的文本, ...

  3. ES6 new syntax of Default Function Parameters

    Default Function Parameters.md Default Function Parameters function getSum(a,b){ a = (a !== undefine ...

  4. 关于Unity中NGUI图片精灵响应鼠标的方法

    我在Unity里做NGUI的时候发现一个问题. 在Unity2D场景当中,一个精灵图片只要加上了Box Collider或者Box Collider2D,就可以相应OnMouseEnter和OnMou ...

  5. python--元祖和字典

    一.1:元祖:tuple  在python中,元祖也是一个list, 它和list的区别是list中的元素可以修改,而元祖中的元素不可以修改. 2:元祖的定义:用小括号() 二.1.字典  字典全程d ...

  6. Mysql之单表记录查询

    数据记录查询: 1.简单数据记录查询: select * from table_name; select allfield from table_name; select distinct(属性名) ...

  7. STM32 - SYSTICK(系统滴答定时器)

    SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15).在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基.例如,为多个任务许以不同数目 ...

  8. [TJOI 2016&HEOI 2016]排序

    Description 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题 ,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...

  9. ●BZOJ 2209 [Jsoi2011]括号序列

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2209 题解: Splay 很好的题,但是把智障的我给恶心到了...   首先不难发现,最后没 ...

  10. [bzoj5016][Snoi2017]一个简单的询问

    来自FallDream的博客,未经允许,请勿转载,谢谢. 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出   get(l,r,x)表示计算区间[l,r]中 ...