Objective-C:我的类有静态方法 "does not implement methodSignatureForSelector: -- trouble ahead"

标签 objective-c methods static

我有一个实用类,它只有静态方法,所以它不是从 NSObject 继承的(不需要吧?)

编译时完全没有警告。

问题是在iPhone模拟器上运行时出现的。它崩溃并显示警告“不执行 methodSignatureForSelector:——前面有问题” 好吧,我喜欢“前面有麻烦”的事情,我从来没有听到调试器告诉我“前面有麻烦”。 但我不喜欢的是错误本身......当我明确调用静态方法时,为什么期望我在类中实现 methodSignatureForSelector? (+)

谢谢! 丹尼尔

最佳答案

这不是 Cocoa 中的惯用模式。我强烈建议您重新考虑您的设计。这不是 Java 或 C++。一方面,甚至没有“静态方法”这样的东西——它们是类方法,类本身就是一个对象。

拥有一个不是 NSObject 子类的类也很奇怪(“不需要”不是偏离默认行为的非常合理的理由),甚至更奇怪的是只有类方法的类。该类可能应该是单例,或者被删除,并且它的方法变成函数,这取决于它是否需要保持状态。

至于你崩溃的确切原因,如果没有看到你的代码就很难说。该警告本身不应使您的程序崩溃。您确实需要一些 +initialize 的实现,即使它什么都不做,因为运行时将该消息发送给每个接收消息的类。这可能是出现错误的地方 - 您发送一条消息,运行时尝试发送 initialize,您的类没有响应,运行时尝试调用转发机制但不能。

关于Objective-C:我的类有静态方法 "does not implement methodSignatureForSelector: -- trouble ahead",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3516448/

相关文章:

ios - 在已创建的对象 "the name of the class i' 上找不到属性”,并且 View Controller 无法识别其中定义的方法

iphone - PerformSelector After delay 不在后台模式下运行 - iPhone

function - 为什么我可以从Go中的类型调用func?

python - python中递归方法的AttributeError

javascript - 如何将嵌套在一个方法中的函数调用到另一个方法中

c++ - 结构静态成员含义/定义

java - 使用变量/静态变量到 'name' 值以提高可读性

objective-c - iOS TCP/IP 检查连接

java - 您将 Java 应用程序的核心放在哪里?

ios - 为什么会发生警告?