2010-09-23 81 views
4

我收到此警告。Iphone,我該如何解決此警告:'-respondsToSelector:'找不到協議

「-respondsToSelector:」未在協議(多個)

它發生在通過「這裏」下面標線找到。

- (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 

我需要做什麼來修復錯誤?

回答

12

無論是從製作NSObjectSetsSectionController繼承:

@protocol SetsSectionController <NSObject> 

...或轉換爲id

if ([(id) sectionController respondsTo...]) 
1
if ([(NSObject *)sectionController respondsToSelector: 
     @selector(tableView:titleForFooterInSection:)]) 
1

有人需要,

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

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

注:不要忘了這個,#import <objc/message.h>

相關問題