У меня есть следующий код для создания моего окна, моего представления и моего подвид программного обеспечения. Проблема заключается в моем подсмотре «filterView2», когда он добавлен [filterView addSubview:filterView2];
сбоев в этой строке. Есть ли что-то, что я забыл включить или сделал не так? благодаря!Make View and Sub View Programmatically
NSRect mainFrame = [[NSScreen mainScreen] frame];
NSRect helpFrame = NSZeroRect;
float width = 600;
float height = 400;
helpFrame.origin.x = (mainFrame.size.width - width)/2.0;
helpFrame.origin.y = 260.0;
helpFrame.size.width = width;
helpFrame.size.height = height;
helpWindow2 = [[BrightnessView windowWithFrame:helpFrame] retain];
// Configure window.
[helpWindow2 setReleasedWhenClosed:YES];
[helpWindow2 setHidesOnDeactivate:NO];
[helpWindow2 setCanHide:NO];
[helpWindow2 setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces];
[helpWindow2 setIgnoresMouseEvents:YES];
[helpWindow2 setBackgroundColor:[NSColor clearColor]];
[helpWindow2 setOpaque:NO];
// Configure contentView.
NSView *filterView = [helpWindow2 contentView];
[filterView setWantsLayer:YES];
//add subview
NSView *filterView2 = [helpWindow2 contentView];
[filterView addSubview:filterView2];
//CALayer for filterView
CALayer *theLayer = [CALayer layer];
theLayer.opacity = 0;
[filterView setLayer:theLayer];
CGColorRef bgColor = CGColorCreateGenericRGB(0, 200, 255, 1);
theLayer.backgroundColor = bgColor;
CGColorRelease(bgColor);
theLayer.borderColor = CGColorGetConstantColor(kCGColorWhite);
theLayer.cornerRadius = 8.0;
float helpOpacity = (([NSApp isActive] ? 1 : 0));
[[[helpWindow2 contentView] layer] setOpacity:helpOpacity];
[window addChildWindow:helpWindow2 ordered:NSWindowAbove];
Функция helpWindow2 «contentView», выделяет ли она новую версию представления или по-прежнему сохраняет ее? и о какой катастрофе мы говорим здесь? EXC_BAD_aLLOC? Предоставьте больше информации о сбое и о том, как выглядит функция/свойство/переменная contentView. нужно знать, что это такое – chikuba
EXC_BAD_ACCESS - это сообщение об ошибке, а переменная - это только идентификатор (id) contentView –
, когда вы получаете bad_access, потому что вы пытаетесь получить доступ к тому, что не сохраняется (сохранить счет <1) из-за того, что вы выпустили память (например). в этом случае вам действительно нужно посмотреть на ваш дизайн. должно ли представление быть его собственным подсмотром? на самом деле не подходит для меня, поэтому попробуйте создать новый экземпляр contentView, который вы поместили в свой объект, вы даже можете сделать его копию, чтобы вы ничего не потеряли. – chikuba