問題タブ [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.
ipad - iWork の Number'09 式を拡張するには?
(おそらく Objective-C で) 書きたい特定の数式があり、iPad で Apple の iWork スイートの Numbers'09 と統合したいのですが、そのような方法があるのでしょうか?
objective-c - Objective-Cで実行時にプロトコルを作成するには?
最初に、プロトコルの定義について話しているのではないこと、およびプロトコルの概念を理解していることを明確にしたいと思います。
Obj-C ランタイムでは、RUNTIME でのクラスの作成、および ivar とメソッドの作成が可能であることを知っています。SEL-s も作成できます。私は何かが足りないと思いますが、実行時にプロトコルを作成するためにどの関数を呼び出すべきか知っている人はいますか? これの主な理由は、 conformsToProtocol: が機能するためです。そのため、適切なメソッドを追加するだけでは、実際にはうまくいきません。
objective-c - 目標 C: メソッドは、それが呼び出されたコンテキストの知識を持っていますか?
呼び出し元のメソッドの名前を吐き出す、再利用可能なロギング メソッドまたは関数が必要です。例:
iphone - iPhoneで実行時にObjectiveCスクリプトを解釈しますか?
実行時にObjectiveCスクリプトをロードし、現在のiPhoneアプリのクラス/メソッド/オブジェクト/関数に対して実行する方法はありますか?
主な注意:これを実行したい主な理由は、アプリケーションのラピッドプロトタイピングを可能にし、主要なプロトタイピングフェーズが完了した後、作成したスクリプトをビルド時にコンパイルするためです。私は、ObjectiveCインタープリターを含むアプリを出荷する予定はありません。
私が尋ねる理由は、iPhoneアプリに埋め込むことができるluaインタープリターであるiPhoneワックスをいじってみたからです。これは、Objectiveで公開されているオブジェクト/メソッド/機能という意味で非常にうまく機能します。 Cコードは自動的にブリッジされ、luaで利用できます。
これにより、アプリのコアをユーザーのドキュメントディレクトリにあるluaファイルにするだけで、アプリケーションのプロトタイプをすばやく作成できます。アプリをリロードするだけで、XCodeでアプリを再構築しなくても、luaファイルへの変更をテストできます。これは大幅な時間の節約になります。
しかし、Appleの最近の3.1.3 SDKのものでは、このタイプの迅速なプロトタイプ作成を行うための最も安全なアプローチは、解釈されたコードとしてObjective Cを使用できるかどうかだと思いました...そうすれば、最悪のシナリオでは、代わりに、リリース前にアプリにコンパイルするだけです。luaソースをバイトコードにコンパイルし、ビルド時にリンクできると聞きましたが、スクリプト化されたソースがluaではなくObjective cにある場合、最終的に安全なことになると思います。そうすれば、ソースは、関係なく、常にObjectiveCにあります。
これは、iPhoneアプリにObjective Cインタープリターを埋め込む方法の例があるかどうか疑問に思います(私は検索しましたが、何も思いつきませんでした)。これにより、バイナリに組み込まれている現在のクラスに対してアプリのプロトタイプをすばやく作成できます。アプリをデプロイしようとしているときに、アプリ内インタープリターを介してクラスを実行する代わりに、それらをコンパイルします。
iPadとOS4を使用すると、Bluetoothと仮想キーボードをiPhoneとiPadで使用できます。これにより、このタイプのラピッドプロトタイピングは、少なくとも開発期間中は、はるかに便利になります。たとえば、アプリにインタープリターが組み込まれていて、それをiPadにインストールしている場合、XCodeを使用せずに、外出中にインタープリターに対してコーディングできます。そして私にとって、ソースを「アップル承認済み」の状態に戻すための最も便利な方法は、スクリプトがObjectiveCである場合です。
objective-c - iPhoneOSでmarg_setValueの修正を探しています
Cocoa 用に作成されたライブラリをコンパイルしようとしています。関数 marg_setValue() を探すまでは問題ありません。char の前に構文エラーがあると表示されます
( (char) ではなく、3 番目の引数について話している)
LuaObjectiveCBridge を iPhone に移植しようとしています。ランタイムまたはファウンデーションのいずれかを使用する 2 つの選択肢があります。基盤にいくつかの問題があることを発見したので、ランタイムを試しています。しかし、コンパイラは協力していません。
objective-c-runtime - 可変パラメータ関数 - [obj release] 呼び出し時の EXC_BAD_ACCESS;
私は次の方法を持っています:
(void)makeString:(NSString *)str1,... {
}
私は最終的にObjective C Memory Managementの読書に行きます.これに対する答えを見つけると確信しています-おそらくポインタとコピーに関連しています. この関数の最後の行として、実行時に EXC_BAD_ACCESS エラーが発生しますか?
objective-c - GNU Objective-C ランタイムの策略
GNU Objective-C ランタイムで、半任意のデータをインスタンス変数にアタッチできますか?
チャレンジ:
私は現在、一種のペット プロジェクトとして、Linux 用の Cocoa に似たものに取り組んでいます。(どうか、「GNUStep を使用する」というすべてのことで脇道にそれないようにしましょう。それについては知っていますが、私のニーズには合いません。先に進みます…) この目的のために、思い起こさせる単純な ORM システムをまとめようとしています。 DBIx::Perl のクラスの。一般的な考え方は、宣言をできるだけ単純に (読み: 短く) することです。また、可能であれば、+(id)constantClassAttribute
オーバーライド用のメソッドを提供する必要はありません。
一般的な考え方は、結果クラスを次のように宣言することです。
これまでのところ、とてもフーピーです。を使用してこれらのフィールドにアクセスできるようになり、や[ORMResult self]->ivars
のようなアクセサーを自動的に生成するなど、あらゆる厄介なことを実行できます。簡単なことです。残念ながら、このセットアップを使用して追加できない情報が 2 つあります。1つは解決するのに十分簡単ですが、もう1つはそれほどではありません。-[toManyRelation]
-[setToOneRelation]
実績クラスとは?
これは、サブクラス化
ORMResult
( などSomeTable
) によって解決され、そこにプラグインされ、ランタイム dynam(ag)ics を使用して to-ness (toMany、toOne) であることがわかります。(そして、これはトリッキーです!) リレーションシップは null 可能ですか?
これは簡単には解決できません。私の最初のアイデアは
(ab) 次のようにプロトコルを使用します。
これはコンパイルされますが、残念ながら、GDB を使用して
ivars->ivar_list
エントリを検査しようとすると、プロトコル情報が実際にはランタイムで操作できるように保持されていないことがわかります。プロトコル宣言は主にコンパイラー向けであるため、これはある種のねじれた意味を持っていると思います。プロトコル識別子 (
byref
、bycopy
および友人、定義を使用して悪用:これらの指定子は明らかにプロトコルメソッド宣言でのみ機能するため、これには実際には機能しないという明らかな欠点があります。
では、問題は、このイーヴァールへの情報の添付を実際にどのように引き離すことができるかということです。
注:最初に述べたように、Linux 上の GCC によって提供されるGNU Objective-C ランタイムを使用しています。Appleが提供するものではありません!
編集:スターポックス!重要な点を忘れていました。もちろん、別の方法として、単純にすべてのリレーションを null 可能にすることもできます。これは私が本当に望んでいるわけではありませんが、他の選択肢が存在しない場合、それが私がたどり着く道だと思います.
objective-c - Objective-C のスーパーとは正確には何ですか?
私の知る限り、これはスーパークラスへのポインターです。これはスーパークラスに組み込まれており、実行時に動的に把握されるわけではありません。詳しく教えていただきたいです...
誰?
objective-c - object_setClassをより大きなクラスに
を使用していくつかのオブジェクトのクラスを変更していますobject_setClass(id object, Class cls)
。クラスを元のクラスのサブクラスに変更しています。次に、サブクラスでのみ定義されているいくつかのプロパティを設定しましたが、問題なく動作しているようです。
object_setClass
私が理解している限り、オブジェクトを再割り当てせず、isa
ポインタを変更するだけなので、これが機能することに少し驚きました。サブクラスインスタンスが元のクラスインスタンスよりもかなり大きい場合(つまり、より多くのivarがある場合)、オブジェクトが期待どおりに機能する方法がわかりません。
これは、メモリ内のオブジェクト間に大量のバッファメモリがあるためにのみ機能しますか(配置などのため)?
これは堅牢ですか、それとも特定の状況でクラッシュする可能性がありますか?
iphone - ハンドラーファイルで私のオブジェクトを解放したのは誰ですか?
私はiPhone開発の世界の初心者です。
私は新しいプロジェクトを開始し、Objective cについて学んだことをテストするために使用しました。基本的に、ローカルサーバーからデータを送受信し、そのデータの一部をクラス内に保存します。正常に機能します。すべてがコマンドラインにあります。
私のクラス定義:
「out」値を設定し、それらをxmlに変換して、サーバーに送信します。サーバーが応答します。「in」値を取得します。名前は「in」値の特別な値を含む文字列です。
問題は、コードをインターネットで見つけたいくつかの例/デモと混合しようとすると発生します。デモはいくつかのMVCをもたらしますか?ファイル(* Handler.h / m、* ViewController.h / m、* AppDelegate.h / m)。ボタンが1つあり(btnStart)、そのボタンを押すと呼び出されます
startメソッド内にsendおよびreceive呼び出しを配置すると、すべてが正常に機能します。
しかし...
私は2つのボタンを試してみました:送信と受信、両方が機能します(私はそれらを試してコンソールに出力を送信しました)、両方の方法は次のとおりです:
両方とも*Handler.m内
次に:メソッド1)は[myClientsend]を実行するだけです。メソッド2)は[myClientreceive]を実行するだけです。
それは機能しません、それは私に「BAD_ACCESS」エラーを投げます、私はデバッグしました(私はNSZombieを使用しました..)..。
[myClient send]を呼び出すと保存されるデータ(in、out、name)が解放/強制終了/[myClientreceive]を呼び出すと存在しないことがわかりました
[myClientリリース]などとは呼んでいません。
質問:私は何が間違っているのですか?そのコード(方法1)と2))はどこにあるべきですか?
ありがとう。
更新: ここにいくつかのコードがあります、それは巨大です、それで私は重要な部分をコピーして貼り付けました、あなたがより多くのコードを必要とするならば私に知らせてください、ありがとう!
更新: ありがとう(IwasRobbed、Simon、TechZen)
私はコードをデバッグして変更しています...私は次のことを発見しました:名前の名前とIDの値を維持するために、私は次のことをしなければなりません:
質問:Q1。copy
古いコード(なし)について話すと、 name
andのid
値が解放されます。
1)paramIn
辞書に合わせてparamId
リリースされますか?
また
2)両方の値がparamIn
辞書からコピーされますが、保持/コピーの指示はありません
答えは2)だと思いましたよね?
Q2。NSMutableDictionariesparamIn
に保存されている値を保持するにはどうすればよいparamOut
ですか?
ありがとう