Tea*_*App 15 protocols objective-c typechecking ios
我有一个困扰我的功课问题,非常糟糕.以下是对问题的简要说明.
想象一下,您正在开发一个存储联系信息的应用程序.地址簿可以包含许多实体类型,例如人类,公司或具有联系信息的任何其他实体.
- 现在,不是显式检查每个对象类型,而是编写一个协议,声明对象必须如何表现并成功出现在地址簿中.
我回答这个问题的理解和努力是,
构建一个协议,该协议在@required标签下具有每种类型的联系信息的通用方法.在@optional下,所有其他方法在不同的联系方式(例如传真号码与公司有关,但不是人...)之间不相似.在运行时,您可以使用检查对象是否响应任何给定方法selector.
怀疑:然而这又是间接地明确检查对象类型,我是对的吗?
我的第二个想法是使用像abstract classjava 这样的东西.这意味着抽象类中的继承类实现了自己的抽象方法.作为一个天真的iOS开发人员,我不知道如何实现这个?我不确定这是否能解决我的问题.如果有人知道,我想得到启发.
到目前为止进行外部阅读,如果我正在寻找的答案是在其中一个链接中,请告诉我.我会再次阅读它以了解并解决这个问题:).谢谢.
Mat*_*son 10
协议与Java接口相同.它只定义了类应该支持的方法.这是一个清楚解释的页面:http://www.otierney.net/objective-c.html#protocols
基本上,如果你想确保一个类有一个phoneNumber方法(phoneNumber属性的访问者),你会做这样的事情:
@protocol ContactProtocol
-(void) phoneNumber;
@end
@interface Person: NSObject <ContactProtocol> {
...
}
@interface Company: NSObject <ContactProtocol> {
...
}
Run Code Online (Sandbox Code Playgroud)
然后在编译时(或为xcode 4生效)它将告诉您是否忘记将phoneNumber方法添加到类Person或Company类.
| 归档时间: |
|
| 查看次数: |
8166 次 |
| 最近记录: |