디버그에서 예상대로 빌드 및 실행하는 iOS 프로젝트가 있지만 릴리스 용으로 빌드 될 때 컴파일 오류가 발생합니다. 에러가 슈퍼에서 선언되는 아이바 함께 할이며 여기서 구체적수퍼 클래스/하위 클래스의 디버그/릴리스 빌드 차이점
'fetchedResultsController_' undeclared (First use in this function).
인 수퍼 .H이다.
@interface Super : UIViewController <NSFetchedResultsControllerDelegate> {
NSFetchedResultsController* fetchedResultsController_;
NSManagedObjectContext* managedObjectContext_;
}
@property (nonatomic, retain) NSFetchedResultsController* fetchedResultsController;
@property (nonatomic, retain) NSManagedObjectContext* managedObjectContext;
@end
과 서브 클래스 인터페이스가 이렇게 정의
@implementation Super
@synthesize fetchedResultsController = fetchedResultsController_;
@synthesize managedObjectContext = managedObjectContext_;
#pragma mark -
#pragma mark Properties
-(NSFetchedResultsController*)fetchedResultsController {
return nil;
}
수퍼하는 .m : -
@interface Sub : Super <UIActionSheetDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate> {
// extra stuff
}
서브 클래스하는 .m에서 내가
-(NSFetchedResultsController*)fetchedResultsController {
if (fetchedResultsController_ == nil) { // undeclared error here....
//stuff
}
return fetchedResultsController_;
fetchedResultsController
에 대한 게으른로드 기능을 구현
나는 혼란 스럽다. 왜냐하면 왜 이것이 디버그에서 일어날 지 이해할 수 없기 때문입니다. 사람이 문제가 무엇인지 식별 할 수있는 경우
나는이 질문에 대한 대답없는 크게
나는 그 것을 선상에 가져 갔고, 변경을 한 후에는 문제가 없어졌다. 그러나 나는 그 때 '이 초급 클래스가 필요한 것은 무엇입니까?'라고 생각했습니다. 방금 프로젝트에서 제거했습니다! – Damo
@Damo : :-) .... – JeremyP