여기가 이상합니다.'TileMap'이 '+ mapNamed :'에 응답하지 않을 수 있습니다.
@implementation TileMap
+ (id)mapNamed:(NSString *)filename
{
return [[self alloc] initWithFile:filename];
}
- (id)initWithFile:(NSString *)filename
{
if (self = [super init])
{
// ...
}
return self;
}
@end
를하지만 내 응용 프로그램에 [TileMap mapNamed:@"map.plist"];
에 전화를 추가 할 때 엑스 코드는 경고 :
@interface TileMap : NSObject
{
int *data;
int tilesWide;
int tilesHigh;
NSString *imageName;
}
+ (id)mapNamed:(NSString *)filename;
- (id)initWithFile:(NSString *)filename;
@end
구현은 다음과 같습니다 : 나는 다음과 같은 인터페이스를 TileMap
라는 이름의 클래스가
'TileMap'이 '+ mapNamed :'에 응답하지 않을 수 있습니다.
응용 프로그램이 올바르게 컴파일되고 NSLog
(TileMap-initWithFile:
) 내의 호출이 기록됩니다. Xcode의 구문 색상 지정이이 클래스와 메서드에서 해제되어 클래스와 메서드를 각각 따로 이름을 바꾸어 보았습니다. 경고 및 구문 색칠 문제를 제거한 유일한 조합은 클래스와 메서드의 이름을 바꾸는 것이 었습니다.
일부 문서화되지 않은 프레임 워크 클래스 또는 메서드와 충돌하고 있습니까? 문서에서 찾기는 아무 것도 밝히지 않습니다. Find in Project는 호출, 인터페이스 정의 및 구현 만 표시합니다. 나는 많이 먹지 않는다. 기존의 명명 규칙을 무시하지 않고이 문제를 해결할 수있는 방법이 있습니까?
* 부끄러움에 머리를 응답하지 않는다 * 난 그렇게처럼 내 모든 프레임 워크 헤더를 가져 오는 framework.h 있습니다. \t // ... \t # import를 "State.h" \t # import를 "TileMap을 .h " \t // ... 그런 다음 framework.h를 비 프레임 워크 파일,이 경우에는 StateState.h ('State' 확장)로 가져옵니다. 이 방법으로 가져온 다른 클래스 및 메서드로 인해 경고 또는 구문 색이 이상하게 들릴 수 있지만 그게 옳습니다. framework.h에서'#import "TileMap.h"를 제거하고 TitleState.m에 직접 추가하면 경고가 사라집니다 (색칠 문제는 계속되지만 그걸로 살아갈 수 있습니다). –
나는 이것이 내 질문에 대답했다고 생각했지만 그것에 대해 좀 더 생각해 보았다. 클래스와 메서드의 이름을 변경하면 왜 문제가되지 않겠는가? –