私のC++アプリケーションでdefaultUserNotificationCenter
にアクセスしようとしていますが、これは動作しないようです。次のコードは、エラーの原因です:defaultUserNotificationCenterがC++で「認識できないセレクタ」エラーを起こしています
[NSUserNotificationCenter defaultUserNotificationCenter]: unrecognized selector sent to instance $memory-location-to-notifCenter
最後の行で例外が発生しています。私はnotifCenter
をINGのalloc
せずにこれを試してみました
id notifCenter = (id)objc_getClass("NSUserNotificationCenter");
notifCenter = objc_msgSend(notifCenter, sel_registerName("alloc"));
notifCenter = objc_msgSend(notifCenter, sel_registerName("defaultUserNotificationCenter"));
しかし、これは私がバンドル識別子を含むInfo.plistファイルの有無にかかわらず...defaultUser...
に到達する前であってもnilにするnotifCenter
の原因となります。
夢中必ず何をしないためには、私は同じことを行うには、小さなOBJの-Cプログラム(NSUserNotificationCenter *defNotifCenter = [NSUserNotificationCenter defaultUserNotificationCenter];)
を書いて、アセンブリをチェックするためにホッパーにそれをロードし、それがあったdefaultUserNotificationCenter
と舞台裏で起こる:
mov rsi, qword [0x100001128] ;@selector(defaultUserNotificationCenter)
mov rdi, qword [objc_cls_ref_NSUserNotificationCenter]
call imp___stubs__objc_msgSend
これは、今、私は完全に途方に暮れていますシステムレベルで起こって普通の何も表示されません。
[NSNotificationCenter defaultCenter]を使用しますか? –
@Land NSNotificationCenterはスレッド間で通知を送信するためのもので、私が探しているものではありません。 – JLegendre
Objective-C++クラスを使用しない理由は何ですか?次にObjective-CをC++で使うことができます... objc_msgSendを直接使うのは良い考えではありません。 –