問題タブ [macos-carbon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - while(true) {sleep(1);} を置き換える OSSpinLock* の使用法に関するヘルプ
私は、OS X でカーボン C++ アプリケーションを保守しています。コード内のオブジェクトの 1 つに、次のような「スピン ロック」があります。
これらのさまざまなオブジェクトの mState を設定する AudioUnitAddRenderNotify() に供給されるポスト レンダー メンテナンス コールバックがあります。
これを置き換えるために組み込みの OSSpinLock ファミリーの関数を使用することを考えていました (他に何もなければ、それらはスレッドセーフであり、上記のコードはそうではないようです)。
これは合理的に同等でしょうか?また、これらのオブジェクトの mState を操作するメンテナンス スレッドにロック保護を追加する必要がありますか?
cocoa - CMNewProfileSearch を廃止されていない 64 ビット コードに置き換える
CMNewProfileSearch
システム上のカラー プロファイルを検索して反復処理し、名前とフル パスを取得する既存のコードがあります。残念ながら、CMNewProfileSearch
Mac OS X 10.5 では推奨されておらず、64 ビット アプリケーションのコンパイル時には使用できません。
ColorSync Manager 2.5 Reference を読むと、インストールされたカラー プロファイルを反復処理する新しい方法は、CMIterateColorSyncFolder
関数を使用することのようです。
- 本当?
- 代わりに、私がやりたいことを行うココアの方法はありますか?
- 誰かサンプルコードを手に入れましたか?
ありがとう。
macos - OS X Leopard での FSEvents の奇妙な点
Mac 上のいくつかのディレクトリのファイル システム イベントを監視したいと考えています。監視したいディレクトリは実行時に変更される可能性があるため、FSEvents を使用すると、私のアプリは次のようになります。
- コールバックを処理するグローバル コールバック関数を作成します
- フォルダーごとに新しい FSEventStreamRef を作成し、それを上で作成したコールバックに関連付け、変更コールバックをこのフォルダーに関連付けるのに役立つコンテキストを eventStream に追加します。
ほとんどは機能しているように見えますが、コールバックが呼び出され、'eventPaths' 値がコールバックに送信されるときに奇妙なことに気付きました。
たとえば、/Foo と /Bar の StreamRef を作成した場合、/Bar にファイルを追加すると、コールバックがすぐに呼び出されますが、eventPaths は /Foo 内の場所を指し、StreamRef に関連付けられたコンテキストは次のようになります。 /Fooのそれも。
または、/Foo と /Bar を監視していて、/Bar を削除するとします (/Bar の StreamRef を正しく停止して閉じることにより)。/Fee の新しい FSEventStreamRef を作成し、同じコールバックに関連付けます。/Fee を変更してもコールバックは呼び出されませんが、/Foo を変更すると引き続きコールバックが発生します。
オンラインで見た例やドキュメントでは、単一のフォルダーの監視についてのみ説明しています。単一のコールバックを複数の FSEventStreamRef に関連付ける方法に問題がありますか? それは問題ではないように聞こえますが...
誰かが確実に機能する方法で同様のことをしたことがありますか、または私が別の方法で試す可能性のある提案はありますか?
これを実験していたときに私がやろうとしたことの1つは、単一のFSEventStreamRefを使用して、必要なすべてのパスを含むCFArrayRefを渡し、ウォッチリストが変更されたときに新しいFSEventStreamRefを閉じて再作成することです-これはさらに悪いことです上記。
macos - C (Carbon、標準 C/C++) を使用して OSX でファイルを実行可能としてマークする
OS X 上のファイルに「実行可能」ビットをプログラムで設定する方法を探しています。「chmod a+x」を呼び出したくはありませんが、chmod 呼び出しと同じ効果が必要です。助言がありますか?カーボン API またはその他の C/C++ 関数が機能します...
cocoa - Mac OS X: Cocoa アプリケーション内からプロセス ツリー全体を強制終了/終了する最も簡単な方法
これについて多くの質問と回答があることは承知していますが、効率的で堅牢なソリューションを探しています。Cocoa アプリ内からプロセスとそのすべての子プロセスを強制終了する必要があります。プロセスIDを取得しました。コーディングしようとしているのは、次のようにkillコマンドを実行することです
私のアプリ内から...しかし、それは私には非常にハックで残忍なようです。より良い解決策はありませんか?Carbon の KillProcess() とその Process Manager の仲間は、プロセス ツリー表現を自分で構築しない限り、あまり役に立たないようです。何か不足していますか?
また、PID に基づいて Quit Apple イベントを送信するコードもいくつかあります。親プロセスによって定義されたツリー内の各プロセスにボトムアップで送信できるとさらに便利です。しかし、それはあると便利なだけです。最初の質問への回答が「ポイント」を獲得します。
fonts - Carbon/Cocoa フォントの外観が異なる
Carbon アプリで ATSU API を使用して、現在選択されているシステム フォントを描画しようとしています。また、フォントは他のすべてのネイティブ アプリよりも太字になっています。これが私が話していることのスクリーンショットの例です:
(ソース: memecode.com )
一番上の行は XCode で、真ん中は太字以外のフォントを使用したアプリで、下の行は太字フォントを使用したアプリです。重さの違いがわかりやすいように、同じ文字を使いました。私が描画するスタイルを作成するために使用しているコードは次のとおりです。
「Face()」はフォント名を含む C 文字列を返し、「PointSize()」は必要なポイント サイズなどを含む整数を返します。次のコードでこの値を取得しています。
そして、有効な外観/ポイントサイズ情報を返します。実際、フォントは他のアプリよりも太く見えることを除けば、正しく見えます。大きな違いのようには見えないかもしれませんが、アプリ全体がテキストでいっぱいになると、それは明らかです。そして、私の主力製品はメール クライアントです。
レイアウトを作成し、最終的に ATSDrawText を呼び出す描画コードは非常に長く、それが問題の原因であるかどうかはわかりません.スタイルに関連していると思います...しかし、必要に応じて後でそのソースへのリンクを投稿します.
フォントの太さを減らすのを手伝ってくれる人はいますか?
cocoa - Spotlight がクエリを実行しないことがあるのはなぜですか?
Carbon と Cocoa の両方のバージョンの Spotlight API をいじっていますが、同じ問題が時々発生するようです。クエリは実行されず、通知も発生しません。ただし、ほとんどの場合は実行されるため、何か奇妙なことが起こっていることを強調したいと思います。
私は特定のアプリを書いているわけではありません。これは単なる Spotlight テスト ハーネスであるため、クエリはユーザー入力に基づいて実行されません。代わりにapplicationDidFinishLaunching:
、コントローラー内で構成および実行されます。もともとこれを で実行しようとしましawakeFromNib
たが、その場合、クエリは実行されませんでした。(私の理論では、RunLoop はまだ開始されていませんが、よくわかりません。)
applicationDidFinishLaunching:
Carbonのコードは次のとおりです。
以上、記憶で書いたので、原文にない誤字脱字があるかもしれません。元のコードは、時々まったく動作しないことを除けば、問題なくコンパイルおよび実行されます。
何を与える?おそらくapplicationDidFinishLaunching:
、Spotlight クエリには適切な場所ではありません。
objective-c - Xcodeがこれらのエラーを表示するのはなぜですか?
私が得るエラーは、3つのことが宣言されていないというXcodeです(下の写真を参照)。 代替テキストhttp://snapplr.com/snap/ks4h
しかし、ヘッダーファイルで私はそれらを宣言しました(下の写真を参照)
代替テキストhttp://snapplr.com/snap/htmb
宣言したときにこれらのエラーが発生するのはなぜですか。
完全なコード:
ヘッダーファイル。
実装ファイル
cocoa - OS XでCocoaまたはCarbonを使用して単一ウィンドウのスクリーングラブを取得するにはどうすればよいですか?
ユーザーの画面上の単一のウィンドウを識別し、それをスクリーンキャプチャできるようにする必要があります。画面データはメモリに保存され、ディスクには書き込まれません。
これは、コマンドラインツール/ usr / sbin / screencaptureまたはGrabユーティリティによってすでにサポートされています(ただし、それらの機能は、サブプロセスとして起動することを正当化するほど広範囲ではありません)。
参考資料/ヒント
- nm / usr / sbin / screencaptureは、これを行うように見える_CGSGetSharedWindowを含むプライベートCocoaインターフェイスを返します。
- サードパーティのアプリケーションSnapzproはこれを行います(ただし、ソースコードは提供しません)