2016-11-19 81 views
-1

我正在開發一個Swift應用程序。我使用套接字作爲後臺連接。但是要知道,我得到這個錯誤,當我嘗試使用它:Swift/Objective-C背景任務

libsystem_kernel.dylib`__pthread_kill: 
0x11329edd0 <+0>: movl $0x2000148, %eax   ; imm = 0x2000148 
0x11329edd5 <+5>: movq %rcx, %r10 
0x11329edd8 <+8>: syscall -> 0x11329edda <+10>: jae 0x11329ede4    ; <+20> 
0x11329eddc <+12>: movq %rax, %rdi 
0x11329eddf <+15>: jmp 0x113297d6f    ; cerror_nocancel 
0x11329ede4 <+20>: retq 
0x11329ede5 <+21>: nop  
0x11329ede6 <+22>: nop  
0x11329ede7 <+23>: nop  

這也表明「主題:信號SIGABRT」

。這裏我所說的方法:

let x:ComObwareAlifstoPostConnection = ComObwareAlifstoPostConnection() 
    DispatchQueue.global(qos: .background).async { 
     x.connect() 
     let y = x.getPostsWith("username", with: "password", with: "15000000000000", with: "down", with: "0") 

     DispatchQueue.main.async { 

     } 
    } 

這裏是我的Objective-C類(它是由J2Objc轉換的Java)

- (IOSObjectArray *)getPostsWithNSString:(NSString *)username 
          withNSString:(NSString *)password 
          withNSString:(NSString *)time 
          withNSString:(NSString *)direction 
          withNSString:(NSString *)minTime { 
    IOSObjectArray *returnArray = nil; 
    @try { 
    [self connect]; 
    if (ComObwareAlifstoPostConnection_socket == nil) { 
     return nil; 
    } 
    JavaIoDataOutputStream *os = new_JavaIoDataOutputStream_initWithJavaIoOutputStream_([ComObwareAlifstoPostConnection_socket getOutputStream]); 
    [os writeUTFWithNSString:JreStrcat("C$$$$$$$$$$", '2', ComObwareAlifstoPostConnection_SPLITTED, username, ComObwareAlifstoPostConnection_SPLITTED, password, ComObwareAlifstoPostConnection_SPLITTED, time, ComObwareAlifstoPostConnection_SPLITTED, direction, ComObwareAlifstoPostConnection_SPLITTED, minTime)]; 
    [os flush]; 
    JavaIoObjectInputStream *in = new_JavaIoObjectInputStream_initWithJavaIoInputStream_([((JavaNetSocket *) nil_chk(ComObwareAlifstoPostConnection_socket)) getInputStream]); 
    while ((returnArray = (IOSObjectArray *) cast_check([in readObject], IOSClass_arrayType(ComObwareAlifstoPostPost_class_(), 1))) != nil) { 
     return returnArray; 
    } 
    } 
    @catch (JavaNetUnknownHostException *e) { 
    } 
    @catch (JavaIoIOException *e) { 
    if (!hastried_) { 
     hastried_ = true; 
     return [self getPostsWithNSString:username withNSString:password withNSString:time withNSString:direction withNSString:minTime]; 
    } 
    [((JavaIoIOException *) nil_chk(e)) printStackTrace]; 
    } 
    @catch (JavaLangClassNotFoundException *e) { 
    } 
    return nil; 
} 

那麼,哪裏可能是錯誤?用一些其他的方法,它的作品。

回答

0

使用Xcode編譯啓用調試,或者如果使用命令行,則包含C編譯器(clang)「-g」標誌。然後在Xcode的調試器(或使用lldb從命令行)中運行它。當您的應用程序中止時,它應該在您列出的pkill代碼處中斷,但是您可以向上移動堆棧幀(「up」命令)以查看哪條語句