@protocol UITableViewDataSource<NSObject>- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;本人新手,对于协议里的这种方法的声明,有点看不懂啊。一般不都是 (返回类型)方法名称:参数列表....的吗?这两个方法的名称都是 tableView吗?而且必须是tableView吗?在实现协议的时候,名字也要完全相同吗? 对于这种方法的声明,各部分的含义如何去理解??谢谢了!!

解决方案 »

  1.   

    也不一定是“ (返回类型)方法名称:参数列表....”呀,第一个参数一样就看第二个呗,实现的时候直接COPY过去:
    - (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
    {
    return ...;
    }
      

  2.   

    第一个方法名称是tableView numberOfRowsInSection
    第二个是:tableView cellForRowAtIndexPath它多个参数是插在方法名中间的,而不是像其他语言一样,前面方法名,后面多个参数
      

  3.   

    :冒号后面加参数 而不像其他语言是在方法名后面的括号里加参数
    OBJ-C这种比较长的函数名是为了让人明白每个函数大概的作用。
    最前面的括号是返回类型 中间的都是参数类型
      

  4.   

    要想实现UITableView的数据源方法,方法名必须是那样,另外判断两个方法是否相同 ,不仅要区分方法名,还要区分方法的参数。tableView 是方法的名,后面的是参数的名称
      

  5.   


    还是有点看不懂啊。身边没有会obj-c的人,所以请再指点一二啊根据楼上几位的回复,我先说一下我的理解,以此为例:
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;从左到右:
    1、“减号”说明这是个对象方法
    2、“(UITableViewCell *)”说明此方法的返回值类型是UITableViewCell的对象
    3、第一个tableView,是第一个参数的名称????<<<<<<<此处不确定。
    4、接着的“(UITableView *)tableView”,它还是是第一个参数的参数变量??用于指明了此参数的类型??或者是相当与this指针??<<<<<<<此处不确定。
    5、“cellForRowAtIndexPath”,根据iPhone SDK源代码来看,这个就是方法名称了。
    6、“(NSIndexPath *)indexPath”指明了第二个参数的类型和参数变量(参数名称是否被省略了???不确定。)。以上6条理解,请大家指点~~~!
      

  6.   

    是不是所有冒号之前部分,合起来之后,合起来的总称是方法的名称??
    因为貌似在什么地方有看到过“方法tableView:cellForRowAtIndexPath”这样的说法。
      

  7.   

    - (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section;拿这个来说吧
    冒号后面的肯定是参数;空格后面的,表示方法名的另外一部分我也可以写成
    -(void)seta:(NSString)a setb:(NSString)b setc:(NSString)c;
    反正穿进去就三个参数a,b,c。
      

  8.   


    不好意思    我觉得你说的有问题
    第一个方法名称是tableView: numberOfRowsInSection:
    第二个是:tableView: cellForRowAtIndexPath:
    方法名是带冒号的.另外我回答一下楼主的问题
    以上两种方法都是UITabelView中很常用的代理方法
    以这个为例
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
    1.它的返回值为UITableViewCell类型的对象,冒号后面带的是参数类型和参数.
    2.这是一个绘制cell的方法
    另外实现协议时,方法名需要相同.