Первоначальный вопрос остается ниже этого обновления:
Поэтому дальнейшие исследования показывают, что в моем
"... отсутствует сеттер или переменная экземпляра"
сообщения журнала происходят из-за нерешительности .xib
.
Я изначально думал, что это может быть причиной, поэтому я прошел через процесс повторного подключения розеток и свойств впостроитель графического интерфейса, но этого, похоже, недостаточно для восстановления соединений.
Я восстановил розетки как свойства, а не iVars, и снова подключился, но безрезультатно.Так что я нахожусь в процессе переделки .xib с нуля.Следите за результатами.
Ниже следует оригинальный вопрос:
Объявив и синтезировав свойства в родительских и листовых классах, и попытавшись в них получить доступ к свойствам их соответствующим классом.property names, Xcode отклоняет код.
Недавно я опубликовал аналогичный вопрос и удалил его после того, как ему сообщили, что для ответа недостаточно информации, поэтому ниже я включаю мини-приложение, которое показывает, каксоответствующая настройка была в реальном приложении из более чем 2000 строк Objective-C, которое было построено и работало правильно, прежде чем я попытался добавить функцию свойств «Родитель / Лист».
Я указал сообщения об ошибках компилятора с префиксом////
.Когда я закомментирую ошибочные строки, приложение с его сборками и .xib
, разумеется, будет функционировать неправильно.
ParentClass.h
// ParentClass stuff belongs in the original main window controller
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
@interface ParentClass : NSObject
{
IBOutlet NSTextField * messageTextField;
IBOutlet NSButton * proceedButton;
}
@property (assign) IBOutlet NSWindow * window;
@property (strong) NSMutableString * parentPropInfo;
- (IBAction) awakeFromNib;
- (IBAction) doCreate:(id)sender;
@end
ParentClass.m
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
#import "ParentDelegate.h"
#import "ParentClass.h"
#import "SheetClass.h"
@implementation ParentClass
ParentDelegate * MyDelegate; // only confirms termination requests
NSWindowController * SheetController;
@synthesize parentPropInfo;
- (IBAction)awakeFromNib {
MyDelegate = [NSApplication sharedApplication].delegate;
MyDelegate.ParentController = self; // BTW, this property assignment works!
SheetController = [[SheetClass alloc] initWithWindowNibName: @"SheetClass"];
messageTextField.stringValue = @"Click Proceed button";
}
- (IBAction)doProceed*emphasized text*:(id)sender {
parentPropInfo = @"Hello!".mutableCopy; // to be read by the sheet
[NSApp runModalForWindow:SheetController.window];
// Sheet is active now until it issues stopModal, then:
messageTextField.stringValue = SheetController.sheetPropInfo; // set by the sheet
////above gets ERROR "Property sheetPropInfo not found on object of type 'NSWindowController *'"
messageTextField.stringValue = SheetController.window.sheetPropInfo;
////above gets ERROR "Property sheetPropInfo not found on object of type 'NSWindow *'"
[NSApp endSheet: SheetController.window];
[SheetController.window orderOut:self];
}
@end
SheetClass.h
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
#import "ParentClass.h"
@interface SheetClass : NSWindowController
{
IBOutlet NSTextField * propTextField;
IBOutlet NSButton * cancelButton;
}
@property (assign) IBOutlet NSWindow * window;
@property NSMutableString * sheetPropInfo;
- (IBAction)awakeFromNib;
- (IBAction)doCancel:(id)sender;
@end
SheetClass.m
#import "SheetClass.h"
#import "ParentClass.h"
@implementation SheetClass
@synthesize sheetPropInfo;
- (IBAction)awakeFromNib {
propTextField.stringValue = self.window.sheetParent.parentPropInfo; // set by the parent
////above gets ERROR "Property parentPropInfo not found on object of type 'NSWindow *'"
sheetPropInfo = @"Goodbye!".mutableCopy; // to be read by the parent
}
- (IBAction)doCancel:(id)sender {
[NSApp stopModal];
}
@end
Я ничего не могу найти в документации Apple или обширном (три недели сейчас!) Онлайн-поиске, чтобы предложить любую информациючто касается моего ужасного невежества.Я прошу прощения за огромный пакет кода, необходимый для иллюстрации моей проблемы!Где мне получить необходимую информацию?