3

RパッケージCocoahttp://www.rforge.net/Cocoa/で見つけたので、カスタマイズしたObjective-cクラスと呼んで使用したいと思います。

単純なカスタムクラス(以下のように呼ばれます)を含むdylibをロードしてから、次のDOHelloように呼び出します。

hc <- .MClass("DOHello")
h <- .M(hc, "alloc")
h <- .M(h, "init")
.M(h, "hello")

コードの最初の3行は問題ありませんが、を呼び出す.M(h, "hello")と、RStudioセッション全体がクラッシュします。また、のソースコードをパッケージに直接追加しようとしましたDOHelloCocoa、結果は同じです。

クラスDOHello

@interface DOHello : NSObject 

- (void)hello;

@end


@implementation DOHello 

- (void)hello {
    printf("Hey, there");
}

@end

クラッシュレポート:

Process:         rsession [8215]
Path:            /Applications/RStudio.app/Contents/MacOS/rsession
Identifier:      rsession
Version:         ???
Code Type:       X86-64 (Native)
Parent Process:  RStudio [1931]
User ID:         502

Date/Time:       2013-03-04 11:47:44.858 +0800
OS Version:      Mac OS X 10.8.2 (12C54)
Report Version:  10

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.CoreFoundation        0x00007fff867d301d __NSI0 + 621
1   com.apple.CoreFoundation        0x00007fff867d2aee -[NSInvocation getArgument:atIndex:] + 302
2   Cocoa.so                        0x000000010c4fef4f ObjCsendMsg + 1135
3   libR.dylib                      0x0000000109ffee37 do_External + 327 (dotcode.c:540)
4   libR.dylib                      0x000000010a02e448 Rf_eval + 1672 (eval.c:494)
5   libR.dylib                      0x000000010a02fedd do_begin + 141 (eval.c:1415)
6   libR.dylib                      0x000000010a02e29c Rf_eval + 1244 (eval.c:468)
7   libR.dylib                      0x000000010a0333b1 Rf_applyClosure + 849 (eval.c:861)
8   libR.dylib                      0x000000010a02e1b2 Rf_eval + 1010 (eval.c:512)
9   libR.dylib                      0x000000010a0669e2 Rf_ReplIteration + 514 (main.c:256)
10  libR.dylib                      0x000000010a066cd1 R_ReplConsole + 161 (main.c:306)
11  libR.dylib                      0x000000010a0671ea run_Rmainloop + 90 (main.c:988)
12  rsession                        0x0000000109786b1b r::session::runEmbeddedR(core::FilePath const&, core::FilePath const&, bool, bool, SA_TYPE, r::session::Callbacks const&, r::session::InternalCallbacks*) + 427
13  rsession                        0x0000000109769b29 r::session::run(r::session::ROptions const&, r::session::RCallbacks const&) + 3193
14  rsession                        0x0000000109386f35 main + 14517
15  rsession                        0x000000010936e154 start + 52

クラッシュレポートは完全ではありません。役立つと思うセクションをコピーしただけです。

4

1 に答える 1

0

Cocoaこれは、voidメソッドから結果を取得しようとしていたバグでした。現在は修正されています。stats-rosuda-develメーリングリストを使用するか、質問やバグレポートについて作成者に電子メールを送信してください。

于 2013-03-04T17:22:05.087 に答える