Objective-C语言特性及与C++混合编程详解
1. 协议循环引用问题及解决方法
在Objective - C编程中,可能会出现协议循环引用的情况。例如:
- foo:(id <B>)anObject;
@end
其中协议 B 声明如下:
#import "A.h"
@protocol B
- bar:(id <A>)anObject;
@end
这种情况会导致循环引用,两个文件都无法正确编译。为了打破这种递归循环,需要使用 @protocol 指令对所需协议进行前向引用,而不是导入定义协议的接口文件。示例代码如下:
@protocol B;
@protocol A
- foo:(id <B>)anObject;
@end
使用 @protocol 指令只是告知编译器“B”是一个稍后会定义的协议,并不会导入定义协议 B 的接口文件。
2. 启用静态行为
Objective - C对象是动态实体,许多决策从编译时推迟到运行时:
- 对象内存动态分配 :对象的内存由创建新实例的类方法在运行时动态分配。
-
超级会员免费看
订阅专栏 解锁全文
2794

被折叠的 条评论
为什么被折叠?



