深入探索Objective - C与iPhone开发:协议、异常处理及应用部署调试
1. Objective - C协议的独特之处
在Objective - C编程中,协议的运用有其独特的逻辑。从Java程序员的视角来看,对于带有可选方法声明的协议可能会存在疑问,因为Java里若依据协议编写代码,会期望协议中的方法必然存在。然而在Objective - C中,即便方法不存在,也不会抛出异常。在Objective - C里,发送消息时若无人能处理该消息,不会有任何异常情况发生。
在使用协议时,它与类有相似之处,但存在细微差别。传递类时,实际上传递的是指针而非类本身。例如在sayHello方法中:
- (void) sayHello: (NSString*) name;这里传递的不是名为name的字符串,而是字符串的指针。
协议并非类,它只是一个包含声明(而非定义)的头文件。传递时,要么直接传递协议本身(id会被自动理解),要么传递id。
以定义温度计协议为例,假如创建一个Doctor类,虽然知道它要告知患者体温,但不清楚具体使用的温度计类型,这时就可以使用协议:
- (void) sayTemp : (<ThermProtocol>) objTherm;此声明