0
최상의 방법은 응용 프로그램의 첫 번째 컨트롤러에서 개체 컨텍스트를 전달하는 것입니다. 그러나 내 앱이 내비게이션 컨트롤러로 시작하고 일부보기 컨트롤러는 콘텐츠 만 필요하며 핵심 데이터가 필요하지 않습니다. 이것이 더 간단한 해결책이라고 생각했습니다.기본 컨트롤러의 AppDelegate에서 핵심 데이터 개체 컨텍스트가있는
는헤더 : 구현
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
@interface CoreDataViewController : UIViewController
- (void)saveContext;
//See ggfela's answer
//@property (readonly, strong, nonatomic) AppDelegate *appDelegate;
//@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, weak, nonatomic) AppDelegate *appDelegate;
@property (readonly, weak, nonatomic) NSManagedObjectContext *managedObjectContext;
@end
: 아마
#import "CoreDataViewController.h"
@implementation CoreDataViewController
@synthesize appDelegate = _appDelegate;
@synthesize managedObjectContext = _managedObjectContext;
-(AppDelegate *)appDelegate
{
if(!_appDelegate) {
_appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
}
return _appDelegate;
}
-(NSManagedObjectContext *)managedObjectContext
{
if(!_managedObjectContext) {
_managedObjectContext = self.appDelegate.managedObjectContext;
}
return _managedObjectContext;
}
- (void)saveContext
{
[self.appDelegate saveContext];
}
@end
나는이 클래스에서 상속 할 때 나는 내가 모여 SIGABRT 오류를 받고 있어요 관리되는 개체 컨텍스트에 액세스하려고 의미가있다 어딘가에서 메모리 누출. 나는 Objective-C에 익숙하지 않아서 디버깅에 대해 너무 많이 모른다.
누구나 내가 뭘 잘못하고 있는지 말할 수 있습니까?
다른 방법 (컨트롤러에서 하위 컨트롤러로 컨텍스트 전달)을 수행해야하고 사과가 결과적으로 내 앱을 차단할 수 있습니까?
좋아요. 저는 지금 강하고 약해져 있습니다. GC에 크게 의존하는 것은 C# 프로그래머에게는 새로운 것입니다. – rashleighp
감사합니다. 나는 그것을 바꿨다. (그리고 위의 그것을 편집했다.) 그러나 오류는 여전히 지속된다. 앱 위임 코드와 관련이있을 수 있습니까? (이것은 Master DetailController에 컨텍스트를 제공하는 맨 위 메서드를 제외한 Master Detail 템플릿 프로젝트의 것입니다.) – rashleighp
그냥 (읽기 전용, 비 원자) 약자는 세터를 지칭합니다. appDelegate 속성은 어디서나 액세스 할 수 있으므로 필요하지 않습니다. – ggfela