IOS开发之路-Objective-C 复合

来源:互联网 发布:东营区一中知校平台 编辑:程序博客网 时间:2024/05/16 01:38

今天先补充一下很有必要记住的东西.



objective-c 格式化输出符号

%@     对象

%d, %i 整数

%u     无符整形

%f     浮点/双字

%x, %X 二进制整数

%o     八进制整数

%zu    size_t

%p     指针

%e     浮点/双字 (科学计算)

%g     浮点/双字

%s     C 字符串

%.*s   Pascal字符串

%c     字符

%C     unichar

%lld   64位长整数(long long)

%llu   无符64位长整数

%Lf    64位双字

%e 是实数,用科学计数法计的



复合

复合貌似是一个新概念,和继承有什么区别呢?

继承之间是A是一个is a )B

而复合是A中有一个(  has  a )B

举个例子, 一台电脑由主机,显示器,鼠标,键盘...等等组成.

其中每一部分都有各自的功能和作用,组合到一起就会发挥更大的作用,

这就是复合.但是你不能说鼠标是继承了电脑吧.


需要注意的是:

严格的讲,只有对象间的组合才能叫复合,像int ,float ,enum ,struct 等基本数据类型都被认为是对象的一部分。

这个时候

  • @class的作用就是告诉编译器,有这么一个类,用吧,没有问题。
  • 在对象复合时,使用@class非常有用,因为被复合的对象只需要在整体中声明变量即可,所以需要知道有这么一个类即可。但是通过#import 来引入这个类的话需要首先编译这个类才行,使用@class就不要再#import这个被复合的类了
  • 复合时只需要声明变量,不需要调用对象中的方法,所以使用@class即可,如果.m中需要调用该类下得方法,则不能使用@class引入类,二用#import。
  • @class 还可以解决循环依赖关系的问题,例如A.h 导入了 B.h ,而B.h 导入了 A.h ,每一个头文件的编译都要让对象先编译成功才行,使用@class 就可以避免这种情况的发生。


原创粉丝点击