【问题标题】:Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) when calling a function in Objective-C线程 1:在 Objective-C 中调用函数时的 EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
【发布时间】:2018-01-21 01:59:38
【问题描述】:

尝试在 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

【问题讨论】:

    标签: objective-c cocoa objective-c-runtime


    【解决方案1】:

    这段代码有很多问题。事实上,我建议完全放弃它,并从不同的教程或参考指南重新开始。

    Cocoa 应用程序根本不是这样构建的。

    相反,首先进入 Xcode,创建一个新的 Cooca 应用项目,然后检查它是如何构建的。

    另外,这里的 Objective-C 也是无效的。例如,必须先分配 WindowController,然后才能对其进行初始化。同样,您从不直接致电dealloc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      • 2015-10-19
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多