我试图传递两个变量的方法,但得到一个断点:线程错误



代码如下:

#import <Foundation/Foundation.h>
#import "microsoft.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int a,b,sum,mul1,mul2;
        microsoft *m1=[microsoft alloc];
        NSLog(@"nEnter first variable : ");
        scanf("%d",&a);
        NSLog(@"nEnter first variable : ");
        scanf("%d",&b);
        [m1 sumvar1:a var2:b];
        sum=[m1 getsum];
        mul1=[m1 mulvar1:3 var2:3]; // Error Line -----
        mul2=[m1 getmul];         
        [m1 name:@"hello"];
        NSLog(@"nName : %@ n Sum = %d n Mul = %d",[m1 name],sum,mul1);
    }
    return 0;
}

调试NAVIGATOR -线程1

libdyld.dylib`start:
0x7fff91f6d7e1:  movl   %eax, %edi
0x7fff91f6d7e3:  callq  0x7fff91f6d808            ; symbol stub for: exit
0x7fff91f6d7e8:  hlt    

DEBUG NAVIGATOR - Thread 2

libsystem_kernel.dylib`kevent:
0x7fff9427ad0c:  movl   $33554795, %eax
0x7fff9427ad11:  movq   %rcx, %r10
0x7fff9427ad14:  syscall
0x7fff9427ad16:  jae    0x7fff9427ad1d            ; kevent + 17
0x7fff9427ad18:  jmpq   0x7fff9427b4d4            ; cerror_nocancel
0x7fff9427ad1d:  ret    
0x7fff9427ad1e:  nop    
0x7fff9427ad1f:  nop    

为什么这个语句mul1=[m1 mulvar1:3 var2:3]会导致崩溃?

看来你的microsoft实例没有初始化:alloc的调用给出了实例内存,但没有设置实例本身。在创建m1的调用中将alloc替换为new,如下所示:

microsoft *m1=[microsoft new];

相关内容

最新更新