問題タブ [objective-c-runtime]
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.
objective-c - クラスインスタンス変数のObjective-Cパターン?
サブクラスによって「オーバーライド」できるクラス変数について、Objective-C で適切なパターンは何でしょうか?
通常のクラス変数は、通常、クラス メソッドとして定義された公開されたアクセサーと共にファイル ローカルな静的変数を使用して、Objective-C でシミュレートされます。
ただし、これはクラス変数と同様に、クラスとそのすべてのサブクラスの間で値が共有されることを意味します。場合によっては、サブクラスがそれ自体の値のみを変更すると興味深いことがあります。これは通常、構成にクラス変数が使用される場合に当てはまります。
例を次に示します。一部の iOS アプリでは、特定の共通抽象スーパークラス (注釈) の多くのオブジェクトがあり、それらは多くの具体的なバリエーション (サブクラス) になります。すべての注釈はラベルでグラフィカルに表現され、ラベルの色はその注釈の特定の種類 (サブクラス) を反映する必要があります。したがって、すべての Foo 注釈には緑色のラベルが必要であり、すべての Bar 注釈には青色のラベルが必要です。各インスタンスにラベルの色を保存するのは無駄です (実際には、多くのオブジェクトがあり、実際の構成データ (各インスタンスに共通) は単一の色よりもはるかに大きいため、おそらく不可能です)。
実行時に、ユーザーはすべての Foo 注釈に赤いラベルを付けるように決定できます。等々。
Objective-C ではクラスは実際のオブジェクトであるため、Foo クラス オブジェクトに Foo ラベルの色を格納する必要があります。しかし、それは可能ですか?この種のものにはどのようなパターンが適していますか? もちろん、クラスをその構成値にマッピングするある種のグローバル辞書を定義することは可能ですが、それはちょっと見苦しいものです。
objective-c - ブロック引数を使用して反射的にメソッドを呼び出す
UIWebView 内の JavaScript からアプリケーションのネイティブ部分への呼び出しを行うための抽象化レイヤーに取り組んでいます。
そのためには、JavaScript 関数呼び出しをオブジェクトへの Objective-C メッセージに変換する汎用メカニズムが必要です。これは、ブロック引数を必要とする Objective-C オブジェクトでメソッドを呼び出すことを除いて、すでにかなりうまく機能しています。
ブロック引数として NULL を渡すことなく、一般的な方法でそのようなメソッドを呼び出すにはどうすればよいですか。渡されたすべての引数 (可変引数) を反復処理できるジェネリック ブロックを渡したいと思います。
言い換えると、これらのブロックの特定のタイプ (つまり、署名の違い) に関係なく、Block-Parameters を使用して任意のメソッドを一般的に呼び出す方法はありますか?
objective-c - バックグラウンドサービスでのアクションを伴うタスク
私は1時間以上グーグルを検索してきましたが、それが合法であり、アクションをトリガーするバックグラウンドサービスにいくつかのタスクを追加する(そしてアプリをフォアグラウンドにする)ことが可能かどうかはよくわかりません。
タスクとは、バックグラウンドサービスが指定された時間に何かを実行していることを意味します。通知などでIOSアラートを表示することは可能ですが、単純な通知だけでは不十分です。
実際に私はビデオを再生したいのですが、これが不可能な場合はおそらくオーディオですか?アプリを前面に出すことはできないのでしょうか?
オプションは何ですか?
objective-c - Objective-C メタデータを使用してクラス依存関係グラフを生成する
この男は、クラスの依存関係グラフを生成するための非常に優れたツールを思いつきましたが、それはソース コードの解析と#import
ディレクティブの検索に依存しています。
これはきちんとしていますが、これには多くの問題があります。特に、インポートのインポートやプレフィックスヘッダー、インポートによって参照されるファイル内のクラスが実際に使用されているかどうかは考慮されていません。
class-dump
Mach-O ファイルに保存されている Objective-C のメタデータを調べて、クラスの依存関係のメモリ内表現を生成したいと考えています。
私はむしろこれを最初からやりたくないので、私は疑問に思っています:
- すでに行われていますか?
- この情報を抽出するために必要な基本的なツールを提供するオープンソース ライブラリはありますか (Mach-O ファイルを調べ、そこに含まれる Objective-C 情報のファサードを作成するライブラリ-繰り返し処理できるようにします)すべてのクラス、それらのメソッド、プロパティ、ivar などをスキャンし、他のクラスへの参照をスキャンします) class-dump のソースから始めるのが良いと思います。
- この種の経験がある場合、私が達成しようとしていることは実行可能ですか?
- どのような障害を克服する必要がありますか?
iphone - iphone sqliteの問題
サポートファイルフォルダーにdbをインポートして、次を使用してdbに接続しようとしました:
挿入されたコードから値を挿入しようとしましたが、プログラムを終了してデータベースを確認すると、値が存在しません。ここで何が問題なのかわかりません。
objective-c - クラスメソッドのリストを取得する
特定のクラスの静的メソッドリストを取得する方法を探しています。ランタイム関数を使用したインスタンスメソッドのリストのみを取得しますclass_copyMethodList()
。
静的メソッドを一覧表示する方法はありますか?
objective-c - Objective-c ランタイムは、直接の c/c++ プログラムよりも余分なレイヤーを意味しますか?
私は、objective-c プログラムを実行するには、objective-c ランタイムが必要であることを読みました。
私の知る限り、どちらの C/C++ プログラムもランタイム環境を実行する必要はありません。生成されたバイナリ コードは、基盤となる OS によって直接実行されるためです。
これは、Objective-c プログラムを実行するには冗長レイヤーが必要であることを意味しますね。もしそうなら、このレイヤーは Java VM と .net ランタイムのように見えますか、それとも Qt ランタイムのように見えますか?
EDIT:
いくつか読んだ後、objcコンパイラーは、生成されたコンパイル済みコードに、メソッドの受け渡しなどの多くのことを担当する追加の情報を生成することがわかりました(objc_sendMsg()
、introspection
およびその他)
ありがとう。
objective-c - PyObjC: 既存の Objective-C クラスを削除する方法
先ほど ObjC クラスを作成しました。どうすればまた削除できますか? 後で、別のバージョンで再作成したいからです。
今、再宣言すると、例外が発生しますX is overriding existing Objective-C class
。
objective-c - Cocoa:実行時に別のドックアイコンを追加します
使用せずに実行時にドックに別のアイコンを追加することは可能[NSWorkspace launchApplication:]
ですか?
どのように?
あなたが「いいえ」と言う前に:私はfork()
などのようなものを喜んで使用します。
私は実際に少し試してみましたfork()
が、エラーが発生します:
objective-c - PyObjC: nib-file なしで簡単なダミーアプリを作成する方法
さまざまな理由から、NIB ファイル (またはその他の外部リソース) を使用できない/使用したくありません。
PyObjC、つまり純粋な Python コードを使用して、単純なダミー アプリ (単純なメニュー、空のウィンドウなど) を作成するにはどうすればよいですか?