여러 사용자 지정 클래스가있는 프로젝트에서 작업하고 있습니다. 데이터를 저장할 정수 속성이있는 CardModel
(NSObject)과 CardModels
묶음을 포함하고 CardView
(UIView)의 배열을 가진 Deck
(NSObject)은 CardModel
을 내가 소유하는 속성으로 가질 때 Deck
에서 CardModel
을 선택합니다. 그리고 나서 나는 UINavigationController
에서 돌아 다니는 UIViewControllers
묶음을 가지고 있습니다.@class 선언을 넣을시기와 위치
제 질문은 @class
컴파일러 지시문을 언제 어디에서 사용해야하는지에 관한 것입니다.
나는 새 파일을 만들고 그것을 서브 클래스에 의한 UIViewController
, 나는 MyViewController.h
또는 .m
의 헤더에 @class MyViewController
를 사용해야하고 실제로 때 하나의 컨트롤러와 같은 컨트롤러를 (사용하는 파일의 헤더에 갈 않는 서브 클래스 경우 다른 컨트롤러 유형을 인스턴스화하고이를 스택으로 푸시). 아니면 전혀 사용해야합니까? 주식 구현에 포함 된 것 이외의 클래스에 실제로 새 속성을 추가하는 경우에만 필요합니까? 내가 자리에 @class
을 끼고있는 것처럼 보입니다. 오류가 발생하지 않도록해야하지만, 필요할 때 나는 근본적으로 이해하지 못합니다.
감사합니다.
감사합니다. 꽤 명확 해 보입니다. 헤더의 @class는 해당 클래스를 참조하는 헤더가 ok임을 나타냅니다. 그런 다음 해당 .m 파일의 .h 파일의 #import가 클래스의 실제 속성 및 메서드에 대한 구현 액세스 권한을 제공합니다. 그러나 이것은 NSObject 또는 모든 수퍼 클래스에서 서브 클래 싱되는 것에 대해서만 사실입니까? "새 파일"을 만들고 하위 클래스를 선택할 때마다 필자는이 작업을 수행해야하며 정규 코드 인 클래스에서 클래스를 인스턴스화 할 때마다 필자는 그렇지 않습니다. ? – Steve
모든 수퍼 클래스도 마찬가지입니다. '@class X'는 단순히 "포인터가있을 수있는 클래스 X가 있습니다"라는 약어입니다. 아무것도 더, 아무것도 덜. 클래스의 헤더를 먼저 가져올 수없는 경우에만 필요합니다 (일반적으로 PCH 파일에 있음). – bbum
그래서 여러개의 헤더에 동일한'@class x' 지시어를 사용할 수 있습니다. 단, 헤더가 속성이나 구현하는 메소드에서'x'에 대해 알아야하는 것이 맞습니까? 내 마음 속에 고착하기 시작 - 감사합니다! – Steve