Мне было интересно, можно ли передать ссылку NSWindow на пользовательский объект, а затем использовать этот объект для добавления NSButton и связанного с ним действия/селектора для этой кнопки.
Кажется, у меня возникают проблемы, когда я пытаюсь это сделать. Когда я запускаю пример программы и нажимаю кнопку, возникает следующая ошибка времени выполнения: Поток 1: EXC_BAD_ACCESS (код = 1, адрес = 0x18)
Вот мой код:
// AppDelegate.h
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
@end
// AppDelegate.m
#import "AppDelegate.h"
#import "CustomObject.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
CustomObject *test = [[CustomObject alloc]init];
[test createButton:_window];
}
@end
// CustomObject.h
#import <Foundation/Foundation.h>
@interface CustomObject : NSObject
{
int test;
NSButton *testButton;
}
- (IBAction)pressCustomButton:(id)sender;
-(void)createButton:(NSWindow*)win;
@end
// CustomObject.m
#import "CustomObject.h"
@implementation CustomObject
-(IBAction)pressCustomButton:(id)sender
{
NSLog(@"pressCustomButton");
}
-(void)createButton:(NSWindow*)win
{
testButton = [[NSButton alloc] initWithFrame:NSMakeRect(100, 100, 200, 50)];
[[win contentView] addSubview: testButton];
[testButton setTitle: @"Button title!"];
[testButton setButtonType:NSMomentaryLightButton]; //Set what type button You want
[testButton setBezelStyle:NSRoundedBezelStyle]; //Set what style You want
[testButton setTarget:self];
[testButton setAction:@selector(pressCustomButton:)];
}
@end