iphone - NSObject类别的类方法无法识别

标签 iphone objective-c crash

我在 NSObject 上创建了一个类别,因为我希望所有类都继承我编写的 2 个类方法:

@interface NSObject (MyCategory)

+ (MyEnum) getXYZ;
+ (void) setXYZ:(MyEnum)myEnum;

@end

然后我将此类别导入到我的 PCH 文件中:

#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
    #import "NSObject+MyCategory.h"
#endif

然后我在我的一个类(class)中使用了该方法:

[[self class]getXYZ];

并在运行时出现此错误:

+[MyClass getXYZ]: unrecognized selector sent to class 0xd04f4
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '+[MyClass getXYZ]: unrecognized selector sent to class 0xd04f4'

我做错了什么吗? 类别写得好吗? 类方法不是继承的吗? 我应该使用 [super class] 而不是 [self class] 吗? PCH 文件是导入我的类别的位置吗?

谢谢, 努尔

最佳答案

我想你还没有在类别(NSOBject)的实现文件(.m)中定义getXYZ方法。并且为了调用NSObject的类方法...使用

[NSObject getXYZ];

不是

 [[self class]getXYZ];

关于iphone - NSObject类别的类方法无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12623606/

相关文章:

iOS 7 - UITableView 不保持突出显示

ios - 将 indexpath 标记传递给 tableview 中原型(prototype)单元格内的按钮

c++ - 创建对象时应用程序崩溃

ios - 无法单击 UIScrollView 内的组件

ios - NSString 没有得到正确的字符串

objective-c - 保留核心数据对象的子集

ios - Atos 无法从存档应用程序的 dSYM 中获取符号

android - 应用程序仅在 Debug模式下崩溃

iphone - 有没有办法用AVPlayer区分直播流和点播文件流?

ios - "interfaceOrientation"在 iOS 8 中已弃用,如何更改此方法 Objective C