第一讲 Objective-C简介

Objective-C是一种面向对象的计算机语言。Brad J Cox 1980年基于SmallTalk-80设计。1988年NeXT发布Objective-C,开发环境和类库叫“NEXTSTEP”。1994年NeXT与Sun发布了标准的NEXTSTEP系统“OPENSTEP”,自由软件基金会的实现叫“GNUSTEP“。1996年苹果公司开始支持NeXT,并将其作为Mac OS X的基础,它的版本和开发环境叫Cocoa,使用Objective-C作为主要的开发语言。开发工具为Xcode和Interface Builder。2007年苹果公司推出Objective-C 2.0。

iOS ≠ iPhone,iOS是iPhone和iPad所使用的操作系统,同样Xcode ≠ iOS,Xcode是iOS应用的集成开发环境。

学习Objective-C语言的时候,我们使用下面的工具作为开发环境:

# 编辑器
vim, emacs, TextWrangle, Sublime Text 2/3# 编译器和调试器
gcc/llvm-gcc, gdb
# 笔记工具
为知笔记、网易云笔记、EverNote等
# 博客
CSDN, cnblogs, 自己的博客等
# 论坛
bbs.diveinedu.com, CocoaChina, devdiv
# 问答网站
stackoverflow, 知乎等
# 源码托管网站
Github.com, Google Code, SourceForge等

我们不去一开始就使用Xcode这样强大的集成开发环境有几个好处:

  • 降低门槛,避免过多无关因素干扰注意力。
  • 深入理解程序从源代码到可执行文件的过程,为调试程序打下基础。
  • 强迫记忆关键字和常用方法。

1.1 Objective-C特点

Objective-C是C语言的超集,是在C语言的基础上增加了面向对象的功能,可以直接调用C/C++语言的函数。

  • Objective-C使用Foundation框架中的NSString表示字符串,提供了许多标准的字符串处理方法。
NSStrin *str = @"这是一个Objective-C的字符串";
  • Objective-C的类分为声明和实现两部分:接口部分(interface)和实现部分(implementation)。接口和实现部分可以放在同一个文件中。一般接口文件放在.h的头文件中,而实现部分放在.m实现部分。
//接口部分
@interface DVIStudent : NSObject
- (void)study;
@end

//实现部分
@implementation DVIStudent
- (void)study
{
    NSLog(@"Study hard!");
}
@end
  • Objective-C中的方法使用[]进行调用,称为给对象发送消息
//给student对象发送study消息
[student study];
  • propertyattribute。除了有成员变量作为attribute,还有用于简化gettersetter编写的property
  • Objective-C没有类似于C++的纯虚类,但是提供了协议(protocal),只有声明而没有实现部分。

1.2 Objective-C代码的扩展名

Objective-C使用.m作为实现文件的扩展名,.h做为头文件扩展名。如果使用了Objective-C++,则使用.mm作为扩展名。

1.3 编写第一个Objective-C程序

每次学习一种新的语言时,都喜欢使用“Hello, world!”作为开始,我们在Objective-C中也这样做。首先在文本编辑器中输入如下代码,并将其保存为helloworld.m

#import <Foundation/Foundation.h>

int main(int argc, char **argv)
{
    @autoreleasepool {
        NSLog(@"Hello, world!");
    }
}

在终端(Terminal)中编译运行:

$ gcc helloworld.m -framework Foundation -o helloworld
$ ./helloworld
2014-05-21 18:11:45.791 helloworld[1662:507] Hello, world!

NSLog是一个用于往终端输出的函数,类似于C语言中的printf,能够进行格式化输出。在printf中可以使用的格式化字符都能在NSLog中使用。NSLog会输出打印时间并在结尾自动添加回车换行。

可以使用gcc或者clang编译C或者Objective-C的源代码,如果编译C++或者Objective-C++则使用g++或者clang++。编译时应该引入合适的框架、库以及头文件。调试的时候使用gdb或者lldb,基本的操作命令都是相同的。

 

标签: , ,
文章分类 Objective-C开发系列

发表评论