Я на месте в моем приложении, где по существу каждый ViewController имеет локальный NSManagedObjectContext:iOS Obj-C. Правильное решение?
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
и каждый переход проходит managedObjectContext через тот же сеттер
[segue.destinationViewController setManagedObjectContext:self.managedObjectContext];
Coming от Java, было бы легко создать абстрактный класс, который реализует каждый ViewController. В Objective-c это не похоже, что это возможно. То, что я хочу сделать, - это базовый класс, который выполняет эту передачу, но в основном все, что реализует UIViewController, будет иметь это (включая простой UIViewController, а также UITableViewController). Можно ли/правильно создать «абстрактный» класс, который представляет собой UIViewController, который делает это?
Update:
UIViewController + ManagedObjectContext.h
@interface UIViewController (ManagedObjectContext)
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@end
UIViewController + ManagedObjectContext.m
#import "UIViewController+ManagedObjectContext.h"
@implementation UIViewController (ManagedObjectContext){
NSManagedObjectContext *context; // This is not valid, cant have local variables
}
@synthesize managedObjectContext; // This is not valid, must be @dynamic
-(void)setManagedObjectContext:(NSManagedObjectContext *)context{
//How do you have a local NSManagedObjectContext?
}
@end
Я думаю, вы можете искать объективную категорию. Они используются для расширения классов. – Kyle
Класс, созданный в Objective-C 1.0, был *** беспорядок ***, поэтому он был удален в 2.0. Я не думаю, что это вообще было частью класса iOS NSObject. – CodaFi
Хотя я никогда не видел класс в iOS, я видел нечто похожее на замену UINavigationBar в навигационных контроллерах. – Kyle