Objective-C入门介绍和环境安装 – Objective-C开发教程

Objective-C是一种面向对象编程语言(简称OC),主要针对的平台是iOS和Mac,也就是苹果的产品,它使用smalltalk风格的消息机制转换为C函数的调用(一切皆对象,向对象发送消息命令),也就是说Objective-C是C的超集。
最初OC由NeXT开发,用于其NeXTSTEP系统,后来乔布斯重回平台了也就用了这个,所以OC很多基本API都是以NS-开始的(Foundation框架)。
简单说,Objective-C就是加了smalltalk风格的C面向对象编程语言,记住和理解这个很重要,消息机制和函数调用息息相关。老实说,我并不喜欢这个,如果你之前使用的是C/C++、Java或JavaScript语言,会发现OC真是怪胎!
顺便吐槽一下,一个理想的开发语言,个人认为不要带有太花俏的语法,太过于难而影响使用的机制(留在底层就好),否则用起来就不是编程,而是纠结在语法上了,作为开发者应该关注的是数据结构和算法,这个与语言无关。
面向对象编程(OOP)OC支持面向对象编程,当然也支持混编了(C/C++),OOP的主要特点包括:

  • 数据封装
  • 数据隐藏
  • 继承
  • 多态
Foundation框架也就是上面提到的源于NeXT的基础框架了,该框架包含了OC开发的一些最基本的语言API,例如基本的超类NSObject,数据类型相关,主要包括如下类型的API:
  • 包含基本数据类型和常用的数据结构,如NSArray数组、NSDictionary字典、NSSet集合等等。
  • 包含相关的操作算法,例如字符串操作、文件操作等等。
  • 提供URL处理、日期处理、数据处理和错误处理等等。
【Objective-C入门介绍和环境安装 – Objective-C开发教程】下面是OC代码的简单实例:
#import < Foundation/Foundation.h>int main(int argc, const char * argv[]) { NSArray *array = [NSArray arrayWithObjects:@"OC", @"Java", @"C++", @"Python", @"C", nil]; NSEnumerator *iterator = [array objectEnumerator]; id value; while((value = http://www.srcmini.com/[iterator nextObject])){ NSLog(@"%@", value); } NSLog(@"==========="); for (id obj in array) { NSLog(@"%@", obj); } return 0; }

Objective-C环境安装一般来说OC开发都是使用XCode集成开发环境,只需到App Store下载即可,但是OC作为一个开发语言也不是只能使用这个IDE编程的,甚至也不必限于系统,你可以在除了mac或ios之外进行oc编程,编程的两大利器无非就是:文本编辑器和编译器了,编译器可使用的主流编译器有Clang和GCC(再继续就是需要一个工具了——因为源文件太多以及依赖复杂,于是干脆使用IDE算了,然后一般人可能都忘了这个步骤,有时可能被IDE给弄糊涂了)。
对于文本编辑器可用的有Notepad、EMACS,甚至包括vim或vi,或者使用单纯的系统自带文本编辑器也可以。使用文本编辑器创建的文件成为源文件,OC程序的源文件一般带” .m” 后缀名,不过即使如此,我还是建议使用XCode,除非你有其它需要在windows上或UNIX上进行。
源文件中的OC代码都是可读的,我们需要使用编译器将源文件中的代码编译为机器代码,这样机器才能执行。GCC是目前最流行的一个编译器,但是——XCode放弃GCC了,默认使用Clang进行编译(Android NDK也开始改用Clang了——)。
所以,没特殊情况就不要折腾了,直接使用XCode就行了,不过建议了解一下简单的编译原理,以及GCC和Clang的一些基本概念,对你的编程生涯有很大作用(本博客有一些相关的详细内容,你可以搜索一下)。
但是为了满足特殊情况的需要,这里另外介绍OC在UNIX和Windows上的编程环境部署。
在UNIX/Linux上部署Objective-C编程环境首先第一步是按照gcc编译器以及gcc Objective-C的支持包,使用以下命令(如果不是centos,yum可以改为其它的如apt-get):
$ su - $ yum install gcc $ yum install gcc-objc

接着是安装相关的依赖:
$ yum install make libpng libpng-devel libtiff libtiff-devel libobjc libxml2 libxml2-devel libX11-devel libXt-devel libjpeg libjpeg-devel

为了获取更多的OC特性,你可以下载安装GNUStep:http://main.gnustep.org/resources/downloads.php。
然后切换到下载GNUStep的目录,解压它:
$ tar xvfz gnustep-startup-.tar.gz

使用以下命令切换到目录gnustep-startup:
$ cd gnustep-startup-< version>

接着就是configure和build了,并进一步设置环境:
$ ./configure $ make $ . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh

最后就可以创建OC文件了:hello.m:
#import < Foundation/Foundation.h>int main (int argc, const char * argv[]) { NSLog (@"hello world"); return 0; }

使用cd命令切换到包含hello.m的文件夹,使用以下命令进行编译,并运行:
$ gcc `gnustep-config --objc-flags` -L/usr/GNUstep/Local/Library/Libraries -lgnustep-base hello.m -o hello $ ./hello

在Windows上部署Objective-C编程环境在windows上运行oc程序需要按照MinGW和GNUStep,这两样的下载地址都在:https://www.gnu.org/software/gnustep/windows/installer.html。
下载下来,首先按照MSYS/MinGW系统报,然后按照GNUStep,然后在windows系统的开始>所有程序中找到GNUStep,打开shell窗口,切换到OC文件所在文件夹中,使用以下命令进行编译:
$ gcc `gnustep-config --objc-flags` -L /GNUstep/System/Library/Libraries hello.m -o hello -lgnustep-base -lobjc

编译的结果是exe可执行文件,使用./hello.exe执行即可。
小结Objective-C的入门介绍的环境安装就到这里了,首先影响OC编程的一个重要机制就是消息机制了,这个内容会在OC runtime中进行讨论,你可以跳到后面进行一个简单理解也可以。
后面的编程主要还是使用XCode进行编程,你也可以选择Windows或者UNIX,作为学习OC是很方便的,但是作为实际开发还是用XCode为好。
另外如果不懂编译相关的内容,建议了解一下编译原理的简单概念,以及GCC和Clang编译器,这对你编程的理解有很大帮助。
然后记住这个Foundation基础框架,这个框架的API会被频繁用到,记住导入Foundation头文件两个单词都是首写字母大写的。
最后吧,其实OC是很老的语言了,当然也不是一个热门的语言,苹果开发相对热门的语言是Swift,只是针对iOS和MAC开发用到。不过虽然OC语法十分丑陋,还有一堆的头文件和实现文件,而且对于初学者来说并不是很容易,相对于Swift我还是会选择OC进行开发,Swift也不是很好,感觉很不稳定,最大好处就是更干净了。
老实说Swift的语法也是很不喜欢,包括GO,真头痛~~~OOP最好的语法应该是Java了——不用说,我最爱就是C语言了,老老实实说人话做实事(老是搞事,一个平台各种可替换的编程语言,Google又搞Kotlin,程序员真是命苦——)。

    推荐阅读