这是代码
[EvoScrollBarTagView initWithScrollView:self.listTableView
withTagView:[TagView new]
didScroll:
^(id scrollBarTagView, TagView *tagView, CGFloat offset) {
[scrollBarTagView showTagViewAnimation];
........
我的困惑是为什么scrollBarTagView(type-of id)可以调用EvoScrollBarTagView.h中的方法或属性。参数scrollBarTagView
s type is id, not declared as the EvoScrollBarTagView
的实例对象,有人可以告诉我为什么,非常感谢... 最佳答案
如Objective-C is a dynamic language中所述:
id类型定义通用对象指针。可以使用id
声明变量时,但是您丢失了有关的编译时信息
物体。
因此,这并不意味着scrollBarTagView
可以调用任何方法,而是意味着它将成功编译。如果未实现所引用的方法,则该应用程序将在运行时崩溃。