线程 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) 在 Objective-C 中调用函数时
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) when calling a function in Objective-C
我在尝试调用 objective-c++ 中的函数时遇到错误 Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
这是我正在尝试的代码 运行:
int main(int argc, char* argv[])
{
[WindowController init]; //Fatal error on this line
return 0;
}
和
#include "Cocoa/Cocoa.h"
@interface WindowController : NSObject
{
@private
NSWindow* Window;
}
-(id)init;
-(void)close;
@end
@implementation WindowController
-(id)init
{
id obj = [super init];
if (obj)
{
NSRect WindowRect = NSMakeRect(100, 100, 100, 100);
Window = [[NSWindow alloc] initWithContentRect:WindowRect styleMask:NSWindowStyleMaskTitled|NSWindowStyleMaskMiniaturizable|NSWindowStyleMaskResizable|NSWindowStyleMaskClosable backing:NSBackingStoreBuffered defer:NO];
[Window setTitle:@"New Window"];
[Window setReleasedWhenClosed:NO];
[Window setMinSize:NSMakeSize(50, 50)];
NSView* View = [Window contentView];
[View setAutoresizesSubviews:YES];
[View setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
}
return self;
}
-(void)close
{
[Window close];
[Window dealloc];
[super dealloc];
}
@end
这段代码有很多问题。事实上,我建议完全放弃它并从不同的教程或参考指南开始。
Cocoa 应用程序根本不是以这种方式构建的。
相反,首先进入 Xcode,创建一个新的 Cooca 应用程序项目,然后检查它是如何构建的。
此外,这里的 Objective-C 也是无效的。例如,必须先分配 WindowController,然后才能对其进行初始化。同样,您从不直接调用dealloc
。
我在尝试调用 objective-c++ 中的函数时遇到错误 Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
这是我正在尝试的代码 运行:
int main(int argc, char* argv[])
{
[WindowController init]; //Fatal error on this line
return 0;
}
和
#include "Cocoa/Cocoa.h"
@interface WindowController : NSObject
{
@private
NSWindow* Window;
}
-(id)init;
-(void)close;
@end
@implementation WindowController
-(id)init
{
id obj = [super init];
if (obj)
{
NSRect WindowRect = NSMakeRect(100, 100, 100, 100);
Window = [[NSWindow alloc] initWithContentRect:WindowRect styleMask:NSWindowStyleMaskTitled|NSWindowStyleMaskMiniaturizable|NSWindowStyleMaskResizable|NSWindowStyleMaskClosable backing:NSBackingStoreBuffered defer:NO];
[Window setTitle:@"New Window"];
[Window setReleasedWhenClosed:NO];
[Window setMinSize:NSMakeSize(50, 50)];
NSView* View = [Window contentView];
[View setAutoresizesSubviews:YES];
[View setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
}
return self;
}
-(void)close
{
[Window close];
[Window dealloc];
[super dealloc];
}
@end
这段代码有很多问题。事实上,我建议完全放弃它并从不同的教程或参考指南开始。
Cocoa 应用程序根本不是以这种方式构建的。
相反,首先进入 Xcode,创建一个新的 Cooca 应用程序项目,然后检查它是如何构建的。
此外,这里的 Objective-C 也是无效的。例如,必须先分配 WindowController,然后才能对其进行初始化。同样,您从不直接调用dealloc
。