Iphone,我该如何解决这个警告:'-respondsToSelector:' not found in protocol(s)

Posted

技术标签:

【中文标题】Iphone,我该如何解决这个警告:\'-respondsToSelector:\' not found in protocol(s)【英文标题】:Iphone, how do I fix this warning: '-respondsToSelector:' not found in protocol(s)Iphone,我该如何解决这个警告:'-respondsToSelector:' not found in protocol(s) 【发布时间】:2010-09-23 11:44:03 【问题描述】:

我收到了这个警告。

'-respondsToSelector:' 在协议中找不到

它出现在下面标有“HERE”的那一行。

- (NSString *)tableView:(UITableView *)tableView 
    titleForFooterInSection:(NSInteger)section 

    id<SetsSectionController> sectionController = 
        [sectionControllers objectAtIndex:section];

    if ([sectionController respondsToSelector:
            @selector(tableView:titleForFooterInSection:)])  //HERE

        return [sectionController tableView:tableView 
            titleForFooterInSection:section];

    
    return nil;

这是我的完整 h 文件。

#import <UIKit/UIKit.h>


@interface SettingsTableViewController : UITableViewController 
    NSArray *sectionControllers;



@end

我需要做什么来修复错误?

【问题讨论】:

【参考方案1】:

要么让SetsSectionController 继承自NSObject

@protocol SetsSectionController <NSObject>

...或转换为id:

if ([(id) sectionController respondsTo...])

【讨论】:

【参考方案2】:
if ([(NSObject *)sectionController respondsToSelector:
        @selector(tableView:titleForFooterInSection:)])

【讨论】:

【参考方案3】:

有人需要,

SEL selector = NSSelectorFromString(@"tableView:titleForFooterInSection:");

if([sectionController respondsToSelector:selector]) 
    objc_msgSend(sectionController, selector, tableview, section);

注意:不要忘记这一点,#import &lt;objc/message.h&gt;

【讨论】:

以上是关于Iphone,我该如何解决这个警告:'-respondsToSelector:' not found in protocol(s)的主要内容,如果未能解决你的问题,请参考以下文章

我该如何解决这个“警告:mysqli_connect():(HY000/1049):未知数据库”问题?

警告:忽略无效的分发 -ip (c:\python39\lib\site-packages) 我该如何解决这个问题,这是啥意思? [复制]

Xcode 无法获取进程 XXX 的任务。我该如何解决这个问题? (iPhone SDK 4.0)

如何解决无效的招摇警告

我的 React 应用程序出现无法修复的高严重性警告,我该如何解决?

PHP 安全测试为 GetHTMLValueString 提供了严重的 Reflected XSS 警告,我该如何解决?