这是代码

[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可以调用任何方法,而是意味着它将成功编译。如果未实现所引用的方法,则该应用程序将在运行时崩溃。

10-07 21:25