向TTPhoto添加属性

时间:2011-01-31 16:11:55

标签: iphone objective-c ios three20

是否有更多字段(例如位置等)添加到TTPhoto协议?

我知道一种方法是创建我自己的协议,但这需要我在视图控制器中更改很多东西。有没有更简单的方法来实现这个目标?

1 个答案:

答案 0 :(得分:0)

正式协议主要是编译时自负,以帮助您更清楚自己的意图。它们是一个相对较新的发明,在此之前所有协议都是非正式的 - 它们是类文档的一部分,但未在代码中声明。它们具有运行时效果,您可以使用一些Objective-C运行时方法来查询特定类是否响应特定协议(就像您可以查询特定类是否响应特定选择器一样),但是没有这样的测试将传递对象时,将在运行时发生。

协议只是定义通信的合同,不指定行为。所以没有继承的概念。并且协议中没有包含选择器的运行时列表,因此这个想法并不是特别有用。

您最好的方法是定义一个包含所需额外功能的附加协议。编写新对象以实现两种协议。使用类别方法扩展您不想要或无权访问的类。

如果您需要额外的存储来处理新字段,那么最安全的是子类。实际上,您现在可以在运行时添加实例变量,但是您需要下拉到Objective-C运行时的C接口,并且找到机会这样做会需要一些跳跃。