这可能是一个超级简单的错误,但我的眼睛几乎因为试图追捕它而流血。起初,我认为 ARC 可能在起作用,但现在它完全被禁用了,我仍然遇到这个错误。
我有一个定义静态方法的 UMLanguageProtocol 协议
+(NSArray *)methodFormatComponents;
我试图在函数中调用该方法,但 Xcode 无法识别它(“无已知的类方法选择器”)。
这是我尝试使用它的代码:
#import "UMLLanguageProtocol.h"
@implementation UMLMethod
@dynamic documentation;
@dynamic name;
@dynamic umlClass;
+(void)validPortionOfMethod:(NSString *)method inLanguage:(Class<UMLLanguageProtocol>)language {
[language methodFormatComponents]; <-- Error: No known class method selector
}
@end
以及协议本身,在 UMLanguageProtocol.h 中定义
#import <Foundation/Foundation.h>
#define VISIBILITY_SPECIFIER_COUNT 6
@class UMLMethod;
@class UMLAttribute;
@class UMLParameter;
typedef enum {
PUBLIC,
PRIVATE,
PROTECTED,
PACKAGE,
DERIVED,
STATIC
} visibility;
@protocol UMLLanguageProtocol
/*
* Language Specifiers
*/
+(NSArray *)nativeDataTypes;
// Return a 6 item array with YES if the language supports that visibility
// specifier at the given index, and no if it doesn't.
+(NSArray*)visibilitySpecifiersForVariables;
+(NSArray*)visibilitySpecifiersForMethods;
/*
* Parsing Methods
*/
// Returns a regex string that defines a validly formatted method
+(NSString *)methodFormat;
+(NSArray *)methodFormatComponents;
@optional
+(NSString*)documentationCommentFromText:(NSString*)comment;
+(NSString*)scaffoldTextFromMethod:(UMLMethod*)method;
+(NSString*)scaffoldTextFromParameter:(UMLParameter *)parameter;
+(NSString*)scaffoldTextFromAttribute:(UMLAttribute*)attribute;
+(NSArray *)additionalCommonDataTypes;
+(NSString *)defaultRootObject;
@end
说真的,我在写这篇文章时正在掉头发……请帮忙!
更新:实际上,问题导航器中的错误似乎分为两部分。第一部分是“自动引用计数问题”,第二行是“选择器没有已知的类方法”。这很奇怪,这可能与ARC有什么关系?!