これは非常に単純なバグかもしれませんが、私の目はそれを追い詰めようとして出血しています. 最初は、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
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
真剣に、私はこれを書いているときに髪を失っています...助けてください!
更新: 実際には、エラーは問題ナビゲーターの 2 つの部分にあるようです。最初の部分は「自動参照カウントの問題」で、2 行目は「セレクターの既知のクラス メソッドはありません」です。奇妙なことに、これは ARC と何の関係があるのでしょうか?!