【发布时间】:2013-03-31 09:56:27
【问题描述】:
我正在处理套接字编程。我只是想澄清一个与我从 -mobileorchard.com - Chatty 下载的代码有关的疑问。在研发期间,我在 ChatRoomViewController.m 文件中看到了一个函数调用
[chatRoom broadcastChatMessage:input.text fromUser:[AppConfig getInstance].name];
当我在Room.m文件中看到,对于上面调用的执行;是
- (void)broadcastChatMessage:(NSString*)message fromUser:(NSString*)name
{
// Crude way to emulate an "abstract" class
[self doesNotRecognizeSelector:_cmd];
}
我在谷歌上搜索了“doesNotRecognizeSelector:”,根据Apple 其错误处理,说明“只要对象收到无法响应或转发的 aSelector 消息,运行时系统就会调用此方法。”我的问题是为什么开发人员调用 broadcastChatMessage:fromUser: 函数,如果它在那里没有使用并处理哪个方法的“未找到选择器”异常?
根据Stackovrflow,它用于创建抽象类,根据Question,它可以避免“未完成实现”警告。
我仍然不明白为什么在Chatty Code 中使用该方法,请帮助我了解使用该方法的原因。
【问题讨论】:
-
看起来应用程序的原始开发人员试图模拟 C++ 抽象基类的特性,因为它的实例是无效的。它只是让方法什么都不做或返回占位符值(通常为 0 或 NULL)的一种更极端的形式。
标签: iphone ios objective-c nsobject