您好,欢迎访问本站博客!登录后台查看权限
  • 欢迎大神光临
  • 有朋自远方来 不亦悦乎

Objective-C入门1:OC版本你好世界

Objective-C dz2015 2017-08-25 1196 次浏览 0个评论

C超,支持面向对象,常常简称OC。根据资料称OC开始是基于Smalltalk设计的,但是这是一门什么语言已经不用深究了,总之OC的语法有别与C++(也是C超)、Java、C#等常用的语言语法,在学习过程中,我们一定要放下成见去接纳这种“怪异”的语法,从苹果开发Swift你就可以猜出,OC并不那么友好!

屏幕快照 2017-08-25 下午11.13.21.png

1、我的第一个程序

Xcode建立一个OC命令行程序项目,可以看到代码文件为main.m,没错.m文件就是用于书写OC代码的,实际上,OC是有三种后缀名的代码文件:

.h

头文件。声明类、类型、函数、常量。

.m

源码文件,可以包含OC代码和C代码,常用做法是在.h中声明类,在.m中实现类,但是实际上一个类或者多个类可以在一个.m中声明和实现。

.mm

这种文件除了可以书写OCC之外,还可以混写C++代码。

下面是Xcode自动生成的一个最简单demo代码:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"Hello,World!");
    }
    return 0;
}

解析

OC包含头文件方式-#import

OC中使用#import替代了#include,当然,#include也就是C的东西是完全可用的,#impport可以防重复包含!

基础库-Foundation/Foundation.h

这是OC中最基础的框架了,比如NSLog就是通过这个头文件间接引入的,比如我们试图去掉引入这个头文件,编译会得到一个警告

Implicitly declaring library function 'NSLog' with type 'void (id, ...)'

总之,FoundationOC必不可少的基础之基础的框架

OC自动释放池-@autoreleasepool

从字面意义上解释,这叫自动对象释放池。我们知道Java语言有个叫垃圾回收机制叫GC(实际上mac平台上也用过这个机制),而OC语言有个自动内存回收机制叫ARCAutomatic Reference Counting),更早的时候有个手动内存回收机制叫MRCMannul Reference Counting),什么是RC捏,就是一个对象有多少个指针变量拥有她,ARC机制就是编辑器自动计算拥有者,发现拥有者为0,就会释放内存,当然真实情况要复杂得多,以后我们需要专门去学习OC的内存管理,对于我们这些初学者要先放行,所以,现在我们可以把OC语言当作Java一样,有垃圾回收机制,降低学习门槛啦。回到@autoreleasepool上,扯了那么多ARC,就是要表达@autoreleasepoolOCARC机制有关,@autoreleasepool{}块中创建的对象会被自动销毁,这是防止内存泄漏的最后一道关卡!

OC版本的打印函数-NSLog

NSLog很容易看出她是一个打印函数,她常常用于调试,打印debug信息,和C语言的printf不同,她会在打印内容前添加额外的信息,比如这个程序实际打印出来的是:

2017-05-01 22:39:58.328480+0800 oc_day1_1[3492:89046] Hello,World!

OC字符串和C语言不一样哦-@"Hello,World!"

因为C字面量字符串书写方式已经占用了""符号,所以OC语言的字符串字面量的语法是带@前缀的,编译器会为字符串@""创建一个NSString对象。

已有 1196 位网友参与,快来吐槽:

发表评论