OC语法基础

来源:互联网 发布:友价源码 编辑:程序博客网 时间:2024/05/20 18:42

1.#import的用途


相当于#include 导入头文件 也有两种查找方式< ... > 和" ... "

导入该头文件是因为在程序结尾处用到的其他类和函数的有关信息

跟#include一样,拷贝文件的内容

可以自动防止文件的内容被重复拷贝

#import<Foundation/NSObjCRuntime.h>

NSObjCRuntime.h中有NSLog函数的声明


2.Foundation框架头文件的路径

右击Xcode.app --> 显示包内容

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/Foundation.framework


主头文件

最主要的头文件,名字一般跟框架名称一样,包含了框架中的所有其他头文件

Foundation框架的主头文件名称就是Foundation.h

只需要包含Foundation框架主头文件,就可以使用整个框架的东西


运行过程

编写OC源文件:.m、.c

编译:cc -c xxx.m xxx.c

链接:cc xxx.o xxx.o -framework Foundation(只有用到了Foundation框架才需要加上-framework Foundation)

运行:./a.out


扩展名

.h

头文件。头文件包涵类的定义、类型、方法以及常量的声明

.m

源文件。这个典型的扩展名用来定义源文件,可以同时包含C和Objective-C的代码。


3.@符号

@符号是OC在C基础上新加的特性之一。

常见形式

@”字符串”,%@ , @interface,@implement等。@”字符串”表示引用的字符串应该作为Cocoa的NSString元素来处理。@interface等则是对于C的扩展,是OC面向对象特性的体现。

注:这里提一个小技巧,只要看到@符号,就可以认为它是对于C的一个扩展。


命名规则

以字母或下划线开头,之后可以是任何字母,下划线或者0~9 数字组合。


命名约定:

类名以大写字母开头,实例变量以下划线开头、对象以及方法的名称以小写字母开始。

每次创建新对象时,将同时创建一组新的实例变量且唯一。


4.NSLog()

引入foundation框架后,在OC中用的打印函数是NSLog(),不过引入stdio.h头文件后,也可以用printf(),但是NSLog()提供了一些特性,如时间戳,日期戳和自动加换行符等,用起来更方便,所以推荐使用NSLog()。

使用NSLog()输出任意对象的值时,都会使用%@格式说明。但是如果不是字符串对象时,默认输出的是类名和对象地址。

在使用这个说明符时,对象通过一个名为description的方法提供自己的NSLog()格式。可以通过重写description方法,来改变输出内容。

注:NS前缀告诉你函数来自Cocoa而不是其他工具包。


5.与 C 语言兼容的地方

预处理

#define 语句和 c 一样

#运算符

#define str(x) #x 表示在调用该宏时,预处理程序根据宏参数创建C 风格的常量字符串。

例如:str("hello")将产生"\"hello"\"

##运算符

表示用于把两个标记连在一起

#import 语句相当于#include 语句,但是 #import 可自动防止同一个文件被导入多次。

#条件编译语句(#ifdef 、#endif、 #else 、 #ifndef)和 C 一样
#undef 语句 消除特定名称的定义
其他基本的C 语言特性

数组、函数、指针、结构、联合的用法和C 一样。

Compound Literal 是包含在括号之内的类型名称,之后是一个初始化列表。

例如:如果 intPtr 为 int * 类型:
intPtr = (int[100]){[0] = 1, [50] = 50, [99] = 99};

如果数组大小没有说明,则有初始化列表确定。

其他

如循环语句 (do while、while、for)、条件语句(if 语句(if-else、复合判断条件等) 、switch 语句)、 Boolean(YES NO)、条件运算符、goto 语句、空语句、逗号表达式、sizeof 运算符、命令行参数、位操作都 和 C 一样。


6.个人小结

学习任何一门编程语言都要从其基本语法开始学起,对于学习过C语言基础的人来讲,学习OC的相对其它编程语言更容易上手,因为它和C语言的联系十分紧密,它的使用很多都是封装了C语言的用法,但也正因为此,OC中面向对象的概念相对其它语言来讲就并不十分清晰明了,初学者很容易将C语言的面向过程和OC的面向对象混为一谈。想要真正理解OC的面向对象,就一定要在运用中去领会,在处理问题的过程中去深化理解。

0 0
原创粉丝点击