秃萝卜的技术博客

A iOS Developer Newer

欢迎来到我的技术博客,我是秃萝卜(@Tuluobo),一名 iOS 开发菜鸟。


希望能在 iOS 开发的道路上越走越远,拥有自己开发的千万级用户的 App 。

OC基本语法总结(一)——OC之门

2014年苹果发布了新的语言Swift,同时我又是一个喜欢玩转新东西的人。也是在这个时候,我进入了iOS开发的队列,开始学习Swift,开发iOS应用,现在已经有一个App在App Store上线。然后,在过去的将近两年的时间中,我一直没有深入玩转过苹果的元老语言Objective-C(后面简称OC),但是从编程语言排行榜来看,OC虽然一直再呈下降趋势,但是毕竟经过这么多年的沉淀,很多人还是不愿意抛弃他,学习新的语言,苹果目前也还在支持,并将在未来的一段时间支持,国内外的大部分公司还是以OC开发为主。所以这一段时间我就慢慢的把OC的语言从头到尾啃了一遍,那么今天的主角就是OC基础语言总结。本文默认你已经学习过至少C语言这一门课程。

关键字

基础语言

  • 文件后缀

在C语言(又或者C++语言)编程中,我们是以.c(或者C++中使用.cpp)为后缀的是源文件和以.h文件为后缀是头文件,一般在引用某一文件时,导入头文件,其中的导入时用的是#include 等。

在OC语言中,我们的头文件也是以.h为后缀,我们的源代码文件使用.m为后缀。其中的导入时用的是#import 等。

注意:

  1. 我们可以在OC语言中混合使用C或者C++代码,包含有C语言或者C++语言时,文件的后缀使用.mm。同时一般如果是纯粹的C++文件,源代码文件后缀为.cpp,头文件使用.hpp为后缀。
  2. import和include的功能是一样的,都是将引入的文件原封不动拷贝到当前位置。import的优点:会自动防止重复拷贝,同时兼容C语言的引入。
  3. “ ”优先在当前文件路径查找, < >优先在系统环境查找。
  • 引入新的关键字

OC本来就是在C语言的基础上扩增的,那么OC就支持C语言的所有关键字,同时,OC也增加了自己的关键字。那么都有哪些呢?下面我们来看一下:

@interface @implemention @end @public @protected @private
@select @try @catch @throw @finally @optional
@required @class @property @synthesize @dynamic BOOL
Class SEL YES NO super nil
atomic nonatomic retain assign copy block
strong weak readonly readwrite id protocol

这都是OC增加的关键字,可能还有非常不常用的关键字没有包含进来,目前我已经接触过的基本都包含金来了。后面我们将会再碰到了这些关键字时,做一个对比和分析。

  • 引入新的数据类型

当然,再引入新的关键字之后,新的数据类型也就会被引入。首先,我们回忆一下C语言的数据类型

  1. 基本数据类型
  2. 构造类型
  3. 指针类型
  4. 空类型

那么,上面这些在OC中同样是支持的,下面我们看看引入的数据类型:

  1. BOOL数据类型
  2. Block数据类型
  3. id数据类型和class数据类型
  4. 特殊数据类型SEL(@Select),nil
  • 流程控制语句

C语言在流程控制这儿几乎包含了所有的条件控制语句,所以OC在流程控制方面基本没有增加什么新的内容,只是增强了for循环使用的便捷性。

引入增强for循环:for (... in ...){ /* ... */ }

  • 函数和方法

函数:一般是全局性的,属于面向过程的叫法。方法:一般是相对于对象或者类来说的,属于面向对象编程的叫法。

OC语言在方法这里的改造还是巨大的。首先,在面向对象编程中,方法分为类方法和对象方法。

类方法的定义为:+ (数据类型)方法名: (数据类型)参数

对象方法的定义为:- (数据类型)方法名: (数据类型)参数

  • 面向对象编程

C语言是面向过程的编程语言,而OC是和C++一样的面向对象编程的语言。

面向对象编程有三大属性:封装性,继承性,多态性。

同时,OC将C语言扩展成面向对象编程之后,语法上自然也就有了很大的区别,从上面的对比和新增的内容就可以看出。在面向对象编程过程中,我们将使用@property和@synthesize等关键字。而且与C++不同,OC还引入了分类(Category)的概念,可以在不修改原来类文件的情况下增加方法。还增加了协议(protocol)等。

下一篇主要介绍语法知识点。

  • 异常处理

在C语言中是没有异常处理的概念的,在OC中,苹果引入了异常处理的机制。语法格式:

@try {
// ...
}@catch (NSException *exception) {
// ...
}@finally {
// ...
}

总结

今天主要总结了OC语言在C语言基础上的扩充,我将在下一篇中总结OC面向对象编程的语言知识。OC语法确实和我们过去接触的编程语言语法跳跃很大。学习了swift,才真正感觉到swift是Apple给iOS开发者的一剂新药。况且现在Swift也已经开源了,对于iOS的发展更加有力。

最近的文章

OC基本语法总结(二)——类

上一篇中我总结了OC的基本语法中从C语言扩充来的知识,在这一篇中,我将总结OC的基本语法的使用。如何开发一个OC对象?预备知识首先,我想介绍一下在Mac OS X下面如何通过命令行编译链接OC文件:第一个是编译:cc -c 源文件.m接着链接:cc 源文件.o -framework Foundation最后执行:./a.out为什么后面跟着一个-framework Foundation?这是因为你是用到了一个框架Foundation,如果以后在开发中使用到了系统的框架,都可以这样引入,否则...…

iosswift继续阅读
更早的文章

结合nib开发自定义cell

今天主要是想跟大家分享一下自己使用nib开发自定义cell的经验,此文是初级入门文章,适合入门菜鸟学习,大牛直接略过。好了,话不多说,先上源码,欢迎大家提出各种意见和指导。引言在App中我们会经常用到TableView,这几乎是每一个App的标配,而官方的cell相对简单,很多时候我们都需要自己定义我们的cell,如果只在一个页面用到这个cell的话我们就可以直接在SB中设计,但是如果多个页面都要用的话我们就要考虑代码和文件的重用,这样,设计一个xib是必要的。那么如何来设计呢?自定义ce...…

nibswifttableviewcell继续阅读