简介

Objective-C,是扩充C的面向对象编程语言。它主要使用于Mac OS Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是在C的基础上,加入面向对象特性扩充而成的编程语言。目前,Objective-C主要应用于Mac OS X和iOS这两个NeXTSTEP的衍生系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在任何gcc支持的平台上进行编译,因为gcc原生支持Objective-C。

Objective-C的历史
1980年代初,布莱德·确斯(Brad Cox)在其公司Stepstone发明Objective-C,它以一种叫做SmallTalk-80的语言为基础。Objective-C建立在C语言之上,意味着它是在C语言基础上添加了扩展而创造出来的能够创建和操作对象的一门新的程序设计语言。对Objective-C最主要的描述是他1986年出版的《Object-oriented Programming, An Evolutionary Approach》。1988年,NeXT Software公司获得了Objective-C语言的授权,并开发出了Objective-C的语言库和一个名为NEXTSTEP的开发环境。1992年,自由软件基金会的GNU开发环境增加了对Objective-C的支持。1994年,NeXT Computer公司和升阳微系统(Sun Microsystem)联合发布了一个针对NEXTSTEP系统的标准典范,名为OPENSTEP。OPENSTEP在自由软件基金会的实现名称为GNUStep。1996年12月20日,苹果公司宣布收购NeXT Software公司,NEXTSTEP/OPENSTEP环境成为苹果操作系统下一个主要发行版本OS X的基础。这个开发环境的该版本被苹果公司称为Cocoa。

IOS的历史

苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple TV等苹果产品上。iOS与苹果的Mac OS X操作系统一样,它也是以Darwin为基础的,因此同样属于类Unix的商业操作系统。原本这个系统名为iPhone OS,直到2010年6月7日WWDC大会上宣布改名为iOS

Objective-C的语法

Objective-C是C语言的严格母集合,意指任何原始的C语言程式都可以通过Objective-C编译器而不需修改,也允许 Objective-C 使用任何原始的C语言代码。Objective-C 形容自己为覆盖于C语言上的一层薄纱,这是因为Objective-C的原意就是在原始C语言主体上加入面向对象的特性。Objective-C的面向对象语法源于Smalltalk讯息传递风格。所有其他非面向对象的语法,包括变量型别,前处理器(preprocessing),流程控制,函数声明与调用皆与C语言完全一致。

Hello World

咱们看看Hello World实例

新版本的Xcode 4.3.1下的helloworld例子可以这么写:

#import <Foundation/Foundation.h>int main(int argc, char *argv[]){@autoreleasepool{NSLog(@"Hello World!");}return 0;
}

那autoreleasepool这个是做什么用的呢?

简单的说,每次事件处理时候开始的时候,ios会为我们自动生成一个autorelesepool,结束的时候释放掉。对于每一个Runloop, 系统会隐式创建一个Autorelease pool,这样所有的release pool会构成一个象CallStack一样的一个栈式结构,在每一个Runloop结束时,当前栈顶的Autorelease pool会被销毁,这样这个pool里的每个Object会被release。
那什么是一个Runloop呢? 一个UI事件,Timer call, delegate call, 都会是一个新的Runloop。Autorelease是保证一个method安全的,对于method中的函数调用也适用

旧版本的hellowold如下

#import<Foundation/Foundation.h>int main(int argc, char *argv[]){NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];NSLog(@"Hello World!");[pool drain];return 0;
}

IOS的系统结构

系统结构,从底层到最顶层分为四层,如下图:

1、核心操作系统层, Core OS

2、核心服务层 Core Services


3、媒体层 Media

4、Cocoa Touch层

参考:http://zh.wikipedia.org/wiki/Objective-C

著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

Objective-C语法之Objective-C语言和iOS系统(简介,语法,系统结构)相关推荐

  1. R语言和Hadoop系统架构在大数据分析中的应用

    也许正在喝着咖啡的你,看着阳光从玻璃窗蹦进来,回忆近日的美好,惬意的享受这个"温暖"的暑假.而SupStat已经为你准备了一份暑期数据盛宴. R是什么?               ...

  2. c语言和java语法的区别_c语言和java语法有区别吗?

    c语言和java在语法上有区别,区别是: 1.C语言有指针,java没有指针: C语言的语法比较简单,但是它的亮点指针很容易出错,想要好好的运用指针是件很难的事情,用好了,对程序有很好的帮助,反之,就 ...

  3. SQL语言和T-SQL语言简介

    原文地址:https://www.2cto.com/database/201505/400750.html SQL语言简介 结构化查询语言(SQL)是一个非过程化的语言,它一次处理一个记录,对数据提供 ...

  4. 嵌入式基础:C语言和Linux系统基础内容梳理

    操作系统 1.操作系统是一个软件 2.管理硬件资源 3.为上层的应用层序提供简单易用的接口. linux---------------------------------------- 1.开源.免费 ...

  5. python与c语言在语法上的区别-C语言和Python编程先学习哪个

    原标题:C语言和Python编程先学习哪个 初学者,Python和C语言先学哪个好? 就像是"先有鸡还是先有蛋一样",先学python还是先学C语言,这也是个世纪难题. 这种纠结并 ...

  6. C语言和C++语言在语法上面的部分区别

    (2011-03-16 17:12:13) 标签: 杂谈 分类:计算机 C语言和C++语言在语法上面的部分区别: 1.C语言的定义必须在最前面,C++可以在任何地方定义,比如 for(int i=0; ...

  7. python与c语言在语法上的区别-c语言和python之间有什么区别

    c语言和python的区别是:1.Python是一种面向对象的解释型语言,通过缩进来表示语句体,在Python中每一条语句结尾后没有分号:2.C是一种面向过程的编译型语言,通过"{}&quo ...

  8. java和c语言的语法区别_c语言和java的语法区别是什么?

    c语言和java的语法区别 单文件的编译时间java比C语言快: C语言可以直接操作内存,java不能直接操作: C语言可以封装动态库,java不行: C语言的代码不容易跨平台,java的代码容易跨平 ...

  9. java c语言语法对比_c语言和java的语法区别是什么

    c语言和java的语法区别是什么 发布时间:2020-06-10 11:53:18 来源:亿速云 阅读:172 作者:Leah c语言和java的语法区别是什么?针对这个问题,今天小编总结这篇有关c语 ...

最新文章

  1. python-01实现考勤表添加与删除
  2. php找不到指定的模块,php中的dll“无法找到指定的模块”
  3. 英语语法---句子成分总结
  4. mysql查看数据类型命令_mysql菜鸟指南(增删查改、数据类型、常用命令)
  5. 要配置php环境_只需修改,要配置Apache的PHP环境,只需修改()。
  6. python字符串类库_Python开发以太坊的类库Web3.py V4的新功能
  7. Codeforces Round #281 (Div. 2) A. Vasya and Football 模拟
  8. python wxpython backend wxagg_在wxPython中使用draw()(复制轴)绘制不正确
  9. Python获取文件后缀名
  10. 在Windows mobile 5.0下操作INI文件
  11. 在 const 和 non-const 重载的成员函数中避免代码重复
  12. C语言笔记 隐藏光标函数 带注释(详细)
  13. 互联网+大赛作品_“颂中国力量 绘美好梦想”全市中小学生互联网+书画大赛作品展示(四)...
  14. python bi_这5款BI工具,Python工程师最爱用
  15. 关于APP界面布局设计的八种优缺点
  16. 160亿数据点图表控件LightningChart振动分析可以检测什么?
  17. 【杂七杂八】excel中根据RTL信号位宽生成拼接取位
  18. 应用案例 | 2011款保时捷卡宴3.0T车发动机怠速间歇性抖动
  19. pic12f508 c 语言教程,pic12f508中文资料
  20. 什么是西安80坐标系

热门文章

  1. “聆听”升级,阿里云智能喜迎首席聆听官 1
  2. Android Studio 如何新建layout子项文件夹
  3. Qt开发的小游戏-抗日
  4. System Design [youtube搬运] Tinder 笔记
  5. 推荐系统如何用spark训练得到Embedding向量
  6. 2019中国最佳表现城市排行榜发布,成都、深圳位居前列
  7. CentOS7 扩容任何目录(包括 /boot)小白都可以学会,每一步都有详细截图引导
  8. 软件测试工程师需要达到什么水平才能顺利拿到 20k 无压力?
  9. 拆解华为5G荣耀V30,自研芯片占绝对优势,值得一看!
  10. 企业软文营销重在剪短有效用事实说话