問題タブ [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 - 実行時にインスタンス変数を作成しますか?
ねえ、私はここで少し混乱しています..
ちょっとした学習プロジェクトに EyeTunes Framework を使用しています。それはiTunesコントローラーです。
このフレームワークは、現在 iTunes に存在するプレイリストの配列を提供してくれました。一部のプレイリストには数千のトラックが含まれているため、「applicationDidFinishLaunching」メソッドで各プレイリストのトラック オブジェクトの配列を作成する予定です。(そしてそれらの配列を保持します)
そうすれば、バインディングシステムがプレイリストのトラックリストを表示する必要があるときに、現時点でそのリスト全体をロードする必要はありません。ここまで順調に..
ここで、やりたかった各プレイリストのトラック配列を作成するには:
(allPlaylists は、すべての iTunes プレイリストを含む配列です [ ETPlaylist* ];
ETPlaylist は、「tracks メソッド」でトラックの配列を返します)
それで
各列挙で「arrayContainingTracks」に別の名前を設定するにはどうすればよいですか?
そして、すべてのインスタンス Vars を宣言する必要があるヘッダー ファイルでそれを行う方法は?そしてところで:割り当てられたときに、配列はその内容をメモリにロードするのはどのレベルまでの関係ですか?
objective-c - カテゴリを使用してiTunesApplicationクラスを拡張する
ScriptingBridgesの使い方を学んでいます。iTunesで音量をゆっくりと下げる方法を作成しました。これをカテゴリにして、次のことができるようにします。
動作するNSSpeechSynthesizerの別のカテゴリを作成しましたが、これを取得できません。次のビルドエラーが発生し続けます。
シンボルを含めることができないので、それを機能させるために何か特別なことができますか?
ありがとう、
ライアン・ペンドルトン
更新: 私は以下の1つの解決策しか見つけませんでした。それはMethodSwizzlingを含むので、私はより良い答えを受け入れることができますが、今のところ私が持っているのはそれだけです。
.net - Objective Cは本当にコンパイルされていますか?Visual Basic / .NETランタイムのようなものではありませんか?それでは、他のプラットフォームに移植できない理由は何ですか?
構文的にはCのスーパーセットです。ただし、メッセージは実行時に送信および処理されるため、cのような純粋なコンパイル言語にすることはできませんが、VisualBasicや.Netランタイムのようなランタイムが必要です。
それでは、このランタイムを.NETFrameworkやJavaJVMなどに変換することで、他のプラットフォームに移植できないようにする理由は何でしょうか。
注:VBと言うとき、バイトコードにコンパイルされるのはもちろん最後のバージョン6なので、移植性を除いてJavaまたは.NetがVB6と根本的に異なるふりをするのはなぜですか?Javaと同様に、VisualBasicはにコンパイルされます。 「バイトコード」と呼ばれる中間言語。バイトコードは、VisualBasicランタイムモジュールによってx86マシン言語に変換されます。
続きを読む:http ://www.answers.com/topic/visual-basic#ixzz19iJd3wjA
Javaと同様に、VisualBasicは「バイトコード」と呼ばれる中間言語にコンパイルされます。バイトコードは、VisualBasicランタイムモジュールによってx86マシン言語に変換されます。
objective-c - 文字列( "MyExampleClass")をクラス名(MyExampleClass)に変換します
文字列をクラス名に変換したい。たとえば、文字列などのクラス名を含む、変更される文字列があるとします"MyExampleClass"
。ここで、クラスのオブジェクトを作成しますMyExampleClass
。文字列からクラス名を取得する必要があります。次のようなことをしたいです。(コードをスケッチと同じように考えてください。)
これを行う正しい方法は何ですか?
objective-c - Xcode -- プロジェクトでデッド メソッドを見つける
これに対する部分的な解決策を提供するツールがあるかどうか興味があります。performSelector のため、これはトリッキーな問題です。. . しかし、ツールは少なくとも候補を見つけ出し、人間の仕事を容易にする必要があります。
objective-c - 実装されていないメソッドが解決されるプロセスを決定するものは何ですか?
私が理解しているように、実装されていないメソッドは次の方法で解決されます。
- resolveInstanceMethod: / resolveClassMethod: メソッドを実装する機会を得る
- forwardingTargetForSelector: デリゲートに転送する機会を取得します
- forwardInvocation: 適切と思われる方法でメソッドを処理する機会を取得します。
この 3 段階のプロセスはどこで定義されていますか? NSInvocation は私のニーズには重すぎるかもしれないので、自分で処理したいと思います。ランタイム ソースを調べてみましたが、実際には何も見えません。
古いランタイムはこれを行うためにレシーバーで forward:args: を呼び出すように見えますが、それは新しいランタイムからはなくなったようです。メッセージを処理するために NSInvocation を必要とする程度まで、ランタイムが Cocoa に依存しているとしたら、奇妙なことになるので、プロセスはランタイムではなくフレームワークによって定義されなければならないと推測しています。NSObject / NSProxy で呼び出される文書化されていないメソッドですか?
編集:
objc_msgSend が実装を見つけられない場合に呼び出される C 関数をランタイムが宣言しているように見えますが、定義していません。
id objc_msgForward(id object,SEL message,...);
私は Apple で働いていないので、Foundation がこれをどのように実装しているかはわかりませんが、少なくとも Cocotron の場合は、次のように使用されています。
メソッドを追加してforwardSelector:arguments:
もうまくいかないようなので、これはココトロン特有のものだと思います。objc_msgForward
ファウンデーションで何をするか知っている人はいますか?
objective-c - サブクラスがメソッドを上書きしたかどうかを判断することはできますか?
小さなプロジェクトに取り組んでいるときに、サブクラスdrawRect:
の1つでカスタム描画を行う必要があることに気付きました。サブクラスのデフォルトの背景色が透明から黒に変更されたことに上書きしたときに気づきました(デフォルトの背景色とは、プロパティがnilのときにビューが描画する色を意味UIView
します)。この動作。drawRect:
UIView
backgroundColor
drawRect:
drawRect:
[super drawRect:]
オーバーライドされているかどうかに関係なく、単にabackgroundColor
をnil以外の値に設定すると機能するため、これは実際には問題ではありません。drawRect:
しかし、それは私がサブクラスによってオーバーライドされてUIView
いるかどうかをどのように知っているかについて考え始めました。drawRect:
Objective-Cが、クラスまたはそのスーパークラスでさえ特定のセレクターに応答するかどうかを判断する機能を提供していることを私は知っています。しかし、スーパークラスは、そのサブクラスがそのメソッドの1つをオーバーライドしたかどうかをどうやって知ることができるでしょうか?そして、このタイプの内省が実際に不可能である場合、私の例では何が起こっている可能性がありますか?
objective-c - クラスのファクトリ インスタンスを取得する方法はありますか?
Objective-C ランタイムを使用objc_msgSend()
してファクトリ オブジェクトを呼び出したいのですが、その引数を作成する必要があります。コンパイラのように、ファクトリ インスタンスを使用して最初の引数を指定したいと思います。ファクトリ インスタンスを取得する方法はありますか?
iphone - アプリを独自にカスタマイズした obj-c ランタイムに静的にリンクするのはどれほど簡単でしょうか?
私はランタイムで遊んでいて、匿名クラスを生成する objc_allocateClassPair / objc_registerClassPair の代替案を思いつきました。
匿名クラスは、私が取り組んでいる何かにとって非常に便利ですが、ランタイムの不透明なデータ型が実装される方法に依存しているので心配です (私の知る限り、ランタイムは共有ライブラリであり、 OS バージョン間のこれらのタイプのレイアウト) はトラブルを求めます。
より一般的に言えば、ランタイムがオープンソースであるという事実は、言語の創造性に一定の可能性を開くようです...
共有ランタイムではなく、変更したランタイムに静的にリンクするのはどれほど簡単でしょうか? コンパイラをいじる必要がありますか、それとも他のライブラリにリンクするようなものでしょうか。
これが App Store の承認にどのように影響するかも興味があります。
objective-c - 実行時のプロパティの宣言?
Obj-C で実行時にプロパティを宣言する方法はありますか? 私は何かを探していましclass_addMethod
たが、プロパティのためです。