2014-09-10 1 views
0

iOS 개발을 완전히 처음 접했으니 나와 벗겨주세요. 다음objective-c의 인터페이스와 클래스 정의 간의 관계

#import <UIKit/UIKit.h>  

@class ViewController; 

@interface AppDelegate : UIResponder <UIApplicationDelegate>  
@property (strong, nonatomic) UIWindow *window; 
@property (strong, nonatomic) ViewController *viewController; 

@end 

가 AppDelegate.h에 의해 사용의 ViewController 인터페이스의 선언이 포함 ViewControllerTEST.h라는 파일입니다 :

다음

내 AppDelegate.h 파일입니다

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 

@end 

내 질문 :

AppDelegate.hi에서 "@class ViewController"행을 사용할 때 컴파일러가 ViewController 인터페이스에 대한 선언을 찾을 위치를 어떻게 알 수 있습니까? 도망 갔어? 즉, 컴파일러는 ViewController 클래스에 대한 인터페이스가 ViewControllerTEST.h에 정의되어있을 때 AppDelegate.h에서 "@class ViewController"행을 실행할 때 어떻게 알 수 있습니까?

모든 설명을 크게 환영합니다!

답변

0

누군가가 현재 ViewControllerTEST.h 파일이라고 불리는 파일의 이름을 바꾼 것처럼 보입니다. 아마도 원래 ViewController.h라고 불렸을 것입니다.

기본적으로 헤더 또는 구현 파일에 "@interface ViewController : ..."와 같은 줄이 있으면 실제 .h 또는 .m 파일의 이름은 ViewController.h 또는 ViewController.m이됩니다. 새로운 클래스 (File -> New -> File -> Objective C Class)를 만들 때 그러한 경우가 있습니다.

어쨌든 .h 및 .m 파일을 만든 후에 파일 이름을 실제로 변경하고 연결을 유지할 수 있습니다. .m 파일의 해당 "# import ..."부분을 변경하는 것을 잊지 마십시오 그래도). 중요한 것은 "@interface ..."및 "@implementation ..."부분에서 컨트롤러 이름을 변경하지 않아서 서로 다른 이름의 두 개의보기 컨트롤러가되도록하는 것입니다. 그러면 Xcode에서 오류가 발생합니다.

이 모든 것을 말하면서 Xcode는 처음 클래스를 만들 때 실제 클래스 이름 ("ViewController")을 추적합니다. Xcode에서 Refactor를 수행하지 않는 한, 학습에서이 시점에서는 중요한 주제가 아닙니다. 이 도움이

희망 ...

+0

그래서이 의미합니까 내부적 엑스 코드는 파일의 ViewController @class에서 클래스 이름과 일치 (즉, 처음에 만들) ViewController.h 이름? ViewController.h가 다른 이름으로 변경 되더라도? – BlueBucket7

+0

그렇다면 내부적으로 어떻게 수행됩니까? 이것은 위험한 것 같습니다 ... 도와 줘서 고마워! – BlueBucket7