对于一门语言的历史,我认为写一本书可能都不为过,关键是看你如何介绍和表达。当然每一个人的理解也大相径庭。本文阐述也仅仅只是冰山一角,如果需要深入了解,自己可能需要多花费一些心思。

这里也不会给大家说太多的背景,对于编程来说好像也不是必须,所以我认为大概了解就可以。

说起Objective-C,它是苹果公司用于开发MAC OS X 和IOS 设备的主要编程语言。从语言命名来理解,必然会想到C语言,苹果官方定义是:superset of the C(超集) 其实可以理解为C语言的一种扩展,大家都知道C语言是面向过程的,一堆函数,可阅读性不好。而Objective-C则是面向对象的(object-oriented)语言,它在C语言的基础上扩展,继承了很多C语言的特性,比如一个很重要的概念:指针。当然Objective-C的诞生,还有一种语言的功劳,那就是SmallTalk-80,Objective-C也是借鉴了它的很多语法风格。有兴趣的可以去详细了解下。

我们再来看看苹果公司是如何发展Objective-C语言,先给大家看一张图:

这是NeXT(NeXT也是上任苹果计算机CEO,Steve Jobs在1985年离开苹果计算机后所创立的公司)研发的一种操作系统NeXTSTEP。后来,在1996年,苹果公司出于战略考虑收购了NeXT公司,自然乔帮主又回到了苹果公司。基于NeXTSTEP code library,苹果公司把它集成到了自己的系统中去,也就是现在的MAC OS X,可以说NeXTSTEP 为苹果mac系统的发展奠定了基础。有了MAC 这个强大系统的支持,苹果的手机系统也发展起来,也就是现在的IOS,其实它是MAC 系统延伸出来的,所以它的大部分code还是来自于NeXTSTEP code libary。那NeXTSTEP 核心code是什么呢? 就是我们今天我们说的Objective-C。苹果对OC语言开始扩展重写,增强了OC的语法功能,定义了OC版本2.0,即Objective-C 2.0。由于苹果产品的火热,后来OC便很快成为了开发MAC 和IOS 应用的编程语言,越来越多的开发者学习了该语言,老实说,OC的火热完全是苹果产品带动起来的,用户量大,开发者才去投入。个人感觉OC的语法风格相对于Java C#还是不够简洁。

题外话:有人说,学习Objective-C之前是不是需要学习C语言?我觉得这个还是有必要去了解的。当然也不一定非要从头到尾把C看一遍,做项目等。可以这样说,你可以初期只学习Objective-C,不看C语言,也同样可以。为什么这么说呢,学习本身就是一件很漫长的事情,关注的点太多,容易打消积极性,不知道大家有没有这种感觉,当你去尝试做一件事情的时候,发现做这件事情有很多条件,然后当你在去一个一个去完成这些条件的时候,时间已经很长了,精力也消耗很多,最后可能也不知道自己到底要做什么,容易迷茫,最终会有一种挫败感,久而久之自信心也就没了。当然,主要还是看你自己的实际情况,比如时间,精力等等。

建议还是直接去看Objective-C,在学习的过程中,有些概念不清楚的,可以再去看C语言。即用既查,反复交错进行。

后续我会一章一节的把OC语法详细的介绍一遍,如环境准备,Xcode等。基本上快的两周就可以掌握个大概,至少你能看懂code吧。还是那句话,写代码的捷径就是多练习。

像上面提的,一门语言的历史是很难三言两语说清楚的,大家如果有兴趣可以自己查阅。

这里我提供一些链接供大家参考:

Objective-C (维基百科比较全面) Apple Objective-C(苹果官方文档) 建议还是多看官网文档,比较全面系统。

学习 Object-C: 简史的更多相关文章

  1. JDK1.8源码学习-Object

    JDK1.8源码学习-Object 目录 一.方法简介 1.一个本地方法,主要作用是将本地方法注册到虚拟机中. private static native void registerNatives() ...

  2. 学习Object.assign()

    Object.assign()用于将所有可枚举的值从一个或多个源对象复制到目标对象.它将返回目标对象. 语法 Object.assign(target, ...source); var obj = { ...

  3. ES6学习--Object.assign()

    ES6提供了Object.assign(),用于合并/复制对象的属性. Object.assign(target, source_1, ..., source_n) 1. 初始化对象属性 构造器正是为 ...

  4. 源码学习-Object类

    1.Object类是Java所有类的超类 2.查看Object的属性和方法,发现Object类没有属性,只有13个方法,其中7个本地方法. 3.接下来看具体的方法 3.1 Object() 默认的构造 ...

  5. 第一天:python学习-基础-计算机简史

    第一天:计算机简史 1.元始的计算方式 : 1.1:数手指头,结绳记事.符号记事.算筹(祖冲之-圆周率).算盘:计算效率较低. 1.2:15世纪航海活动各天文需求 计算比较繁重,出现计算尺工具,奥特雷 ...

  6. PHP学习 Object Oriented 面向对象 OO

    定义类class class_name [extends partclass_name]{public private protected var property_name = value;publ ...

  7. Object C学习笔记24-关键字总结

    学习Object C也有段时间了,学习的过程中涉及到了很多Object C中的关键字,本文总结一下所涉及到的关键字以及基本语法. 1.  #import #import <> 从syste ...

  8. Object C学习笔记20-结构体

    在学习Object C中的过程中,关于struct的资料貌似非常少,查阅了C方面的资料总结了一些学习心得! 一. 定义结构 结构体是一种数据类型的组合和数据抽象.结构体的定义语法如下: struct ...

  9. Object C学习笔记17-动态判断和选择器

    当时学习Object C的时被人鄙视了一顿,说使用.NET的思想来学Object C就是狗屎:不过也挺感谢这位仁兄的,这让我学习的时候更加的谨慎.今天的学习笔记主要记录Object C中的动态类型相关 ...

随机推荐

  1. python执行unittest界面设置

    执行单元测试时,系统会自动添加unittest in...的执行服务器. 执行时unittest in...的执行服务器在界面右上方可以看到,且执行结果为左侧框和右侧统计结果. 如果没有,会导致测试结 ...

  2. [leetcode] 87. Scramble String (Hard)

    题意: 判断两个字符串是否互为Scramble字符串,而互为Scramble字符串的定义: 字符串看作是父节点,从字符串某一处切开,生成的两个子串分别是父串的左右子树,再对切开生成的两个子串继续切开, ...

  3. vscode如何将less编译到指定css目录中

    首先使用vscode的搬砖猿,想要在vscode编辑器里面很方便的编译less文件,需要在扩展商店里面下载一款名叫Esay LESS的超好用扩展(我自己都不信),哈哈,其实还好. 安装完扩展之后,最好 ...

  4. 针对Nginx日志中出现的漏洞扫描与爬虫的三种措施

    0x001 使用fail2ban工具结合防火墙(iptables | firewalld),将大量404请求的IP地址封了.(详见fail2ban使用说明:https://www.cnblogs.co ...

  5. 小白学python-day06-

    今天是day06,以下是学习内容总结: 但行努力,莫问前程. --------------------------------------------------------------------- ...

  6. bean的创建(五)第四部分 bean构造器的查找

    前面分析了bean的静态工厂查找 bean的构造器查找过程和bean的静态工厂查找类似 protected BeanWrapper createBeanInstance(String beanName ...

  7. 洛谷 P5150 题解

    题面 因为 n=lcm(a,b)n = lcm(a, b)n=lcm(a,b) ,可以得出: a  和 b  的质因数都是 n 的质因数 对于 n  的每个质因数 x ,在 n 中的次数为 y ,那么 ...

  8. angularjs通信以及postmessage与iframe通信

    这篇文章是用markdown工具写的,有需要的可以使用vscode打开   # angularjs 控制器.组件之间的通信 ## 一.基于事件的方式 此方式下,主要通过 angularjs 内置指令` ...

  9. 大型系列课程之-七夕告白之旅Electron篇

    上一篇分享了一下vbs的撩妹攻略,但细心的兄弟会发现,这种脚本式的攻城方案并不得心应手,有很多妹子害怕是病毒根本不敢点击,而且这个脚本界面风格也不漂亮,不能轻易打动妹子的心,怎么破,小编这次在为各位老 ...

  10. 快速字符串匹配一: 看毛片算法(KMP)

    前言 由于需要做一个快速匹配敏感关键词的服务,为了提供一个高效,准确,低能耗的关键词匹配服务,我进行了漫长的探索.这里把过程记录成系列博客,供大家参考. 在一开始,接收到快速敏感词匹配时,我就想到了 ...