这可能是一个超级简单的错误,但我的眼睛实际上是从试图追捕它出血。起初,我认为ARC可能会扮演一个角色,但现在它完全被禁用了,而且我仍然遇到了这个错误。潜在简单的目标C错误与协议
我有一个UMLLanguageProtocol协议,该协议定义了一个静态方法
+(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
和协议本身,在UMLLanguageProtocol.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有什么关系?
您是否检查过正在传递给'validPortionOfMethod'的语言参数并确认该类确实实现了'methodFormatComponents'类方法?另外,请尝试更改为'inLanguage :(id)language',而不是'inLanguage:(Class)language' –
Jeremy
2012-01-12 00:58:12
我无法重现这一点,我似乎能够做到完全正确,没有错误。编译器命令行来查看是否有任何区别? – mattjgalloway 2012-01-12 01:15:08
@Jeremy如果他这样做,他也将不得不改变他如何调用methodFormatComponents方法。 FWIW,我可以将UMLLanguageProtocol.h文件添加到项目中,然后粘贴另一个类中的validPortionOfMethod方法(例如AppDelegate)并编译对我来说很好。 – UIAdam 2012-01-12 01:17:43