一、 OC简介

  • C语言的基础上,增加了一层最小的面向对象语法
  • 完全兼容C语言
  • 可以在OC代码中混入C语言代码,甚至是C++代码
  • 可以使用OC开发Mac OS X平台和iOS平台的应用程序

二、 OC语法预览

1. 关键字

  • 基本上所有关键字都是以@开头
  • 下面列举一些常见的关键字,看一眼就行了,不用去翻资料查找它们的含义

@interface、@implementation、@end

@public、@protected、@private、@selector

@try、@catch、@throw、@finally

@protocol、@optional、@required、@class

@property、@synthesize、@dynamic

self、super、id、_cmd、__block、__strong、__weak、

2. 字符串以@开头

比如@"Hello"是OC中的字符串,而"Hello"则是C语言中的字符串

3. 其他语法

三、 OC程序的开发过程

与C语言类似:

四、 第1个OC程序

1. 代码编写

跟C语言一样,OC程序的入口依然是main函数,只不过写到一个.m文件中。比如这里写到一个main.m文件中(文件名可以是中文)

#include <stdio.h>

int main()

{

printf("第1个OC程序\n");

return 0;

}

2. 终端指令

  • 编译cc –c main.m
  • 链接cc main.o
  • 运行./a.out

五、 第2个OC程序

1. 代码编写

来点跟C语言不一样的,使用NSLog函数输出内容

#import <Foundation/Foundation.h>

int main()

{

NSLog(@"第2个OC程序");

return 0;

}

2. 终端指令

  • 编译cc –c main.m
  • 链接cc main.o –framework Foundation
  • 运行./a.out

3. NSLog与printf的区别

  • NSLog接收OC字符串作为参数,printf接收C语言字符串作为参数
  • NSLog输出后会自动换行,printf输出后不会自动换行
  • 使用NSLog需要#import <Foundation/Foundation.h>
  • 使用printf需要#include <stdio.h>

4. #import的作用

  • 跟#include一样,用来拷贝某个文件的内容
  • 可以自动防止文件内容被拷贝多次,也就以为着头文件中不用加入下面的预处理指令了

#ifndef  _STDIO_H_

#define _STDIO_H_

#endif

5. Foundation框架的作用

  • 开发OC、iOS、Mac程序必备的框架
  • 此框架中包含了很多常用的API(应用编程接口)
  • 框架中包含了很多头文件,若想使用整个框架的内容,包含它的主头文件即可

#import <Foundation/Foundation.h>

6. BOOL的使用

  • BOOL类型的本质

typedef signed char BOOL;

  • BOOL类型的变量有2种取值:YES、NO

#define YES (BOOL)1

#define NO  (BOOL)0

  • BOOL的输出(当做整数来用)

NSLog(@"%d %d", YES, NO);

六、 第3个OC程序

1. 多个.m文件的开发

跟C语言中多个.c文件的开发是一样的

1) 编写3个文件

  • main.m

#import "one.h"

int main()

{

test();

return 0;

}

  • one.h

void test();

  • one.m

#import <Foundation/Foundation.h>

void test()

{

NSLog(@"调用了test函数");

}

2) 终端指令

  • 编译:cc –c main.m test.m
  • 链接:cc main.o test.o –framework Foundation
  • 运行:./a.out

2. .m文件和.c文件混用开发

1) 编写3个文件

  • main.m

#import "one.h"

int main()

{

test();

return 0;

}

  • one.h

void test();

  • one.c

#include <stdio.h>

void test()

{

printf("调用了test函数\n");

}

2) 终端指令

  • 编译:cc –c main.m test.m
  • 链接:cc main.o test.o
  • 运行:./a.out

(没有使用Foundation框架的话,就不用-framework Foundation)

(注:参考于传智)

我曾经的第一个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程序 创建一个文件夹,文件夹内创建一个a.m的OC源文件,并编辑 之前说过,OC是完全兼容C语言的,那么我们先写个下面的程序尝试一下 #include<stdio.h> ...

  6. 第一个OC程序

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

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

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

  8. 02第一个OC程序

    一.打开XCode4.6.3,新建项目 二.选择Application下的命名行项目 三.输入项目名称,选择Foundation框架创建项目,点击Next 四.二话不说.点击Run.启动我们创建的项目 ...

  9. 05_传智播客iOS视频教程_第一个OC程序

    Cocoa Application开发的是带界面的程序. OC是完全兼容C语言的,但是C语言里面是不能写OC的东西的. OC和C的第一个区别,就是源文件的后缀名的区别.OC程序的源文件的后缀名是.m, ...

随机推荐

  1. 【转】Key/Value之王Memcached初探:一、掀起Memcached的盖头来

    一.Memcached是何方神圣? 在数据驱动的Web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的HttpRuntim ...

  2. Autofac - 组件

    快到年终了, 最近项目比较悠闲, 就想总结下, 项目中所使用到的一些技术, 以及使用方法. 之前有写过Dapper以及Dapper的一个扩展, 这些也是项目中使用过的. 算是一个温故而知新吧. 代码: ...

  3. JS表单验证插件(支持Ajax验证)

    自己编写了一个表单验证插件,支持ajax验证,使用起来很简单. 每个需要验证的表单元素下面有一个span标签,这个标签的class有一个valid表示需要验证,如果有nullable则表示可为空:ru ...

  4. 国产达梦数据库的结合Enterprise Library的应用开发

    在上篇<基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作>介绍了如何在Enterprise Library的数据访问层上支持这种神秘的国产数 ...

  5. EC笔记,第一部分:2.尽量以const,enum,inline代替#define

    02.尽量以const,enum,inline代替#define 原因:编译前的预处理会替换宏,所以调试的时候找不到错误 1.const 尽量用const替代常量宏定义 两种特殊情况: (1).常量指 ...

  6. MySQL 语句大全--------添加列,修改列,删除列

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table ...

  7. TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT;text,longtext,mediumtext,ENUM,SET等字段类型区别

    http://www.path8.net/tn/archives/951 MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述, ...

  8. PHP中用GD绘制饼图

    PHP中用GD绘制饼图,绘制的类见代码: Class Chart{ private $image; // 定义图像 private $title; // 定义标题 private $ydata; // ...

  9. 第 29 章 CSS3 弹性伸缩布局[上]

    学习要点: 1.布局简介 2.旧版本 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS3 提供的用来实现未来响应式弹性伸缩布局方案,这里做一个初步的了解. 一.布局简介 CSS3 提供一种崭新的 ...

  10. [javascript] 对象拷贝

    Object.prototype.clone = function() { var copy = (this instanceof Array) ? [] : {}; for (attr in thi ...