如何修复"未实施的协议"

use*_*951 25 xcode cocoa-touch protocols objective-c compiler-warnings

当我调用一个新的控制器时TestController,我插入

<UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate,UISearchBarDelegate>
Run Code Online (Sandbox Code Playgroud)

到Test.h的接口

当我在模拟器上运行应用程序时,有许多问题说"未完成的实现"和"协议中的方法未实现"

我知道有些方法没有实现,但哪一个?我怎么知道我应该添加什么方法?

Ste*_*her 65

显示问题导航器并展开"协议中未实现的方法"问题之一.第一个详细信息项将显示标题中定义方法的位置(因此,它所在的@protocol).但更好的是,第二个细节将显示协议的名称.

切换到"问题"导航器.忽略不完整的实现消息,并查看协议未实现方法消息.您可以展开此消息以获取编译器提供的更多信息.第一个细节是您正在寻找的:

这里声明的方法

你可以在这里看到我忘了包含一个方法tableView:numberOfRowsInSection:.我可以复制此声明并将其粘贴到我自己的代码中以开始编写该方法.

请注意,我的问题导航器中有三个问题.第三种是另一种缺失的方法,也可以以相同的方式进行扩展和复制.


Zev*_*erg 6

我可以想到两件你可以寻找的东西.首先,查看您的.h文件,看看您是否有任何您可能忘记实现的方法原型,或者实现,然后更改实现,使其不再匹配原型的方法签名.

其次,如果编译器是不会告诉你哪些方法缺失,看的文件UITableViewDelegate,UITableViewDataSource等等.在任务部分,它列出了各种公共类和实例方法,它会说"需要法"旁边的任何那需要在那里.例如,如果你的类符合UITableViewDataSource委托协议,-tableView:cellForRowAtIndexPath:并且-tableView:numberOfRowsInSection:是必需的.