問題タブ [objective-c++]
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++ - Objective C++ コードで合成されたプロパティ セッターによって呼び出されないコピー コンストラクター
Objective-C++ がまばらに文書化されていることは誰もが知っています。これについては何も見つかりませんが、適切で明確な検索用語を見つけるのも難しいと感じています. だから、救助へのStackoverflow(私は願っています)!
私は Objective-C(++) クラス内にインスタンスを持つ C++ クラスを持っています (そして、コンストラクター/デストラクタが呼び出されるようにプロジェクト設定を有効にしています)。
@synthesize
d プロパティを介してインスタンスを公開しようとするまで、これはすべて正常に機能します。私はそれをassign
プロパティにします (Obj-C 保持カウントは適用されないため)。コピーコンストラクターが関与すると予想されるインスタンスを設定する場合を除いて、プロパティは機能しているように見えます。私が実際に見ているのは、一時的なインスタンスが作成されていることです(そのコピーコンストラクターが呼び出されています)-これはすべて予想されています。ただし、ivar インスタンスのコピー コンストラクターは呼び出されません。値は「魔法のように」設定されます。@synthesize
d コードはmemcpy
最終ステップとしてa のようなことをしていると思います。これはstruct
C では問題ありませんが、C++ ではあまり役に立ちません。class
コードの正確性は、適切に呼び出されるコピー コンストラクターと代入演算子に依存します。
誰かがこれをさらに詳しく調べたり、動作させたり、C++ オブジェクトを Obj-C(++) クラスの ivar として保持したり、@synthesize
d プロパティ セッターによって呼び出されたコピー コンストラクターを持ったりすることができないことを確認しましたか?
(必要に応じて、これらすべてのサンプル コードを投稿できますが、最小バージョンでも画面一杯程度です)。
c++ - .cppファイル内のObjectiveC構文?
いくつかのサンプルコードを自分のプロジェクトにコピーしようとしています。サンプルプロジェクトは、SDKのiPhoneExtAudioFileConvertTestです。サンプルプロジェクトには、ExtAudioFileConvert.cppというファイルが含まれています。このファイルには、Objective-Cコードのように見えるものが含まれています。
サンプルプロジェクトは正常に実行されますが、独自のプロジェクトをビルドすると、コンパイラは上記のコードについて文句を言います。エラー:'['トークンの前にプライマリ式が必要です
何が起きてる?明らかに、.cppファイルでObjectiveCブラケット構文を使用する方法がいくつかあります。それを機能させるために何をする必要がありますか?
iphone - iphone: スレッド + リリース プール + [オブジェクト リリース] = 「割り当て解除されたインスタンスに送信されたメッセージ」
iPhoneで小さなコードを実行しているとうまくいきません。
基本的に、ボタンを押すだけで、 が呼び出され、バックグラウンド スレッドでメソッドがrunTest
実行されます。test
そのため、自動解放プールを作成しました。
以下のコードを実行すると、コンソールに次のような美しいメッセージが表示されます。
2010-09-07 11:45:15.527 test[1312:207] *** -[CFString release]: message sent to deallocated instance 0x3d52ba0
test
バックグラウンド スレッド (自動解放プールなし) で実行せず、 を呼び出すだけ[self test]
で、コードは正常に 動作することがわかりました。
だから、問題はスレッド+自動解放プールにあると思いますが、何が間違っていますか? どうすれば解決できますか?
PS私はNSZombie
フラグを有効にしています。
objective-c - Objective-Cのメモリ管理
Objective-cのメモリ管理についていくつか質問があります。
まあ言ってみれば:
sのコンテンツstr1
のコピーがあると思います:含まれているメモリ(ヒープ)の1つのアドレスを指します。このアドレスは、が指しているアドレスと同じではありません。右?test
str1
msg
test
str2について:
1。何を保存しますか?、同じアドレスを指していると思いますtest
が、参照カウンターが2に増えますtest
。2
。テストの内容を変更すると、str2には何がありますか?私はそれがまだ指していると思いますmsg
str3について:それは間違っていますよね?、どうしassign
ますか?
ありがとう。
ボーナス質問:
コンテンツを変更する前にテストをリリースする必要がありますか?
c++ - Objective C ++とは何ですか?
Objective C ++とは何ですか?この言語をXcodeで使用できますか?
coding-style - コーディングスタイル:内部または外部のロック/ロック解除?
もう1つのおそらく非常識なスタイルの質問:
並行性をどのようにロックする必要がありますか?エグゼキュータまたは呼び出し元は、スレッドをロックする責任がありますか?
たとえば、特定の言語ではありません。
また
スレッド化とロックについてはほとんど知らないので、コードが堅牢であることを確認したいと思います。2番目のメソッドは、スレッドセーフでない呼び出しを許可します...技術的には、いかなる種類のロックも実行せずに_executor.method()を呼び出すことができます。
ヘルプ?
ありがとう、
c++ - appendBezierPathWithGlyphs でグリフ アウトラインを取得する際の問題
Objective-C++ を使用しています。
NSBezierPath
sを使用してテキストのパス アウトラインを取得しようとしていますappendBezierPathWithGlyphs
。問題は次のとおりです。出力はかなりナンセンスです:(
私が書いたこと:
たとえば、文字「t」の場合、次の出力が得られます。
これは私にとって本当に間違っているようです!
c++ - 目的-XcodeのC++および.cppファイル
単純なObjective-C++アプリケーションを作成しようとしています。C ++クラスをミックスに追加しようとするまで、Objective-CクラスでのC ++の使用を含め、すべてのコードは正常にコンパイルされています。単純なC++クラスを作成しました。
Test.h
このファイルをObjective-Cクラス(拡張子.mm)に含めると、次のビルドエラーが発生します。
明らかに、私はここでいくつかの単純な概念を見逃しています。いくつかの啓蒙をいただければ幸いです。
android - gcc-xobjective-cとAndroidSDK
Objective-Cが存在し、MinGWでもサポートされているので、渡すこと-x objective-c
で、Android SDKでこれを実現するためのハックはありますか?objective-c
言語がサポートされていないように見える同僚のマシンで基本的なテストを行いました。
UIKitやAppKit、さらにはFoundationを機能させることに興味はありません。私はほとんどのOpenGLESゲームをObjective-Cで作成し、MacOSXとWindowsに正常に移植しました。GNUStepを十分に理解する時間ができれば、GNU / Linuxに簡単に移植できると確信しています(それがなくても、ゲームを実行するためのクラスを作成できます)。
基本言語と基本的なランタイム(可能であればプロパティを含む)に興味があります。必要な範囲で簡単に書くこともNSObject
できます。
その間に、私はなんとかObjective-Cコードをコンパイルし、このためのガイドを書きました:
以下の私の答えに詳細があります。
c++ - Objective-C の iostream と sstream
一部の C++ コードを Objective-C に移植しようとしています。と が含まれていますiostream
がsstream
、Objective-C はこれらを認識しません。何をすべきですか?