問題タブ [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.

0 投票する
2 に答える
254 参照

c++ - c++ 関数内での目的の c クラスの ivar へのアクセス

コールバック関数が呼び出されたときに変更する必要がある文字列 ivar を持つ目的の c クラスがあります。問題は、コールバックが c++ にあるため、その c++ 関数で object-c クラスの ivar にアクセスできないことです。コールバックは、変更できない C++ でなければなりません。これを行う方法は他にもあることを認識しています。つまり、その関数によって設定され、クラスによって読み取られるグローバル変数、または関数と文字列を含み、目的の c クラスのメンバーであるラッパー C++ クラスです。ただし、コールバック内で ivar を設定するだけが、最も簡単でクリーンな方法だと思います。そのようなことを行う方法を知っている人はいますか?

0 投票する
2 に答える
3255 参照

c++ - c++テンプレートを使用してObjective-cメソッドへの引数

C ++テンプレートをObjective-Cメソッドのパラメーターとして使用するにはどうすればよいですか?基本的に私はこのようなことをしたいです:

しかし、それは機能しません。このドキュメントによると、これは可能ですが、例は提供されていません。誰かがこれを行う方法を知っていますか?

0 投票する
3 に答える
1869 参照

iphone - Non 8 Byte aligned memory access causes memory access violation on iPhone 3GS with iOS 4.0

consider the following Objective-C++ iPhone Application (TestMemAppDelegate.mm). It crashes with an EXC_BAD_ACCESS on the iPhone (3GS with iOS 4.0). It works fine in the Simulator. It is clearly a memory alignment thing, because it works fine on the iPhone if the "DataA" struct starts on a 8 Byte border.

Can anyone explain the cause? Is it something with the ARM architecture? ARM compiler?

0 投票する
2 に答える
1986 参照

c++ - Objective-C++ では表示されるが Objective-C では表示されないリンク エラーを解決するにはどうすればよいですか?

Objective-C++ で記述されたサードパーティ ライブラリにアクセスできるように、App Delegate ファイルを .m から .mm (Objective-C から Objective-C++) に変換しています。Objective-C では、アプリ デリゲートが正常にビルドおよび実行されます。しかし、拡張子を変更すると、プロジェクトがビルドされ、リンク エラーが発生します。これらはすべて、使用している C で記述されたスタティック ライブラリのシンボルが欠落しています。エラーは、次の形式の従来のリンク エラーです。

「MyFunction(arguments)」、以下から参照:

-MyAppDelegate.o の [MyAppDelegate myMethod]

シンボルが見つかりません

すべての問題はアプリ デリゲート オブジェクトにあります。ViewController ファイルが .mm であるため、Objective-C++ をコンパイルする準備が整っていることがわかります。だから私の質問にはいくつかの部分があります。

まず、これらのシンボルは、私が使用できないという意味で本当に存在しないのでしょうか? つまり、Objective-C++ ファイルから単純な古い C 関数にアクセスすることはできないのでしょうか? これが本当なら、かなり残念です。私は、ほぼすべての Objective-C コード、そして少なくとも .mm としてビルドされるすべての Objective-C コードが有効な Objective-C++ であると考えました。私が間違っている?

そうでない場合、これらのエラーを防ぐ方法はありますか? 私が知らない Objective-C++ で異なるヘッダー ルールはありますか?

助けてくれてありがとう。

0 投票する
6 に答える
85008 参照

objective-c - std :: stringをNSStringに変換する方法は?

こんにちは私は標準std::stringをに変換しようとしNSStringていますが、あまり運がありません。

次のコードでNSStringaからaに正常に変換できますstd::string

ただし、次のことを実行すると、コンパイル時エラーが発生します

私が得るエラーは

ここで何かが足りませんか?

前もって感謝します。

0 投票する
1 に答える
166 参照

iphone - オブジェクトをobjective-c++/iphonesdkのサブクラスとして初期化する

私は自分が作った別のクラスを初期化しているクラスを持っています。私が作成した他のクラスには、わずかな変更のみのサブクラスがあります(initメソッドには変更はありません)。私が疑問に思っているのは、これをやろうとしても大丈夫だろうかということです。コードは次のようになります。

いずれかの場合:self.shapeLayer = [[UMShapeLayer alloc] init]; 別の場合:self.shapeLayer = [[UMShapeLayerOnslaught alloc] init];

これが問題を引き起こし、私がこれを行うことができる別の方法がある場合は、誰かが私に教えてもらえますか?

0 投票する
1 に答える
133 参照

iphone - ランダム コードは無関係なコードに影響を与える

cocos2d と box2d、パドル、ボール、ブリックを使って目的の C で iPhone ゲームを作成しています。別の関数に半径方向の重力コードを追加しましたが、ここでおかしくなりました。コードは呼び出されず、メソッド内にあるだけで、まったく関係のないパドル コードが壊れます。

別のクラスに nslog を追加すると、さらに奇妙になります。x 上を移動しない状態から、y 上を移動せず、x を移動し始める状態に切り替わるからです。コードのランダムなビットをコメントアウトすると、動作または再ブレークが開始されます。box2d コードを移動して移動できますが、機能するかどうかはわかりません。すべてがランダムです。

誰がこれを引き起こす可能性があるか知っていますか? Objective-C に最大メソッド サイズはありますか? オーバーフローする可能性があります。このクラスの 1 つのメソッドは非常に大きいですか? アイデアはありますか?

ここにいくつかのコードがあります。ボックス本体が反転しただけの同じコードの場合、一致があります。このように、さまざまな物理体が相互作用するものは他にもたくさんあります。それらのいずれかの両方をコメントアウトすると、機能します。そうではないし、そうでもない

編集:解決しました。すべてのクラスを1行ずつすべて調べました。リークを実行し、2 を見つけました。

しかし、最終的には、false に自動初期化されるために依存していたユーティリティ関数の 2 つのローカル ブール値であることが判明しました。ほとんどの場合そうですが、そうでない場合もあります。特に理由はありません。月の満ち欠けとか。

0 投票する
2 に答える
1088 参照

c++ - WebView が NSWindow に表示されない

私は C++ アプリを開発しており、内部に WebKit WebView を含む NSWindow を表示する必要があります。ウィンドウの作成と表示を管理する Objective-C クラスをコーディングしましたが、その中に含まれる WebView は表示されません。これが私のコードです。何が間違っているのか、どうすれば修正できるのかについて何か考えはありますか?

以下のコードを $g++ -x Objective-C++ -framework Cocoa -framework WebKit Foo.m main.m -o testでコンパイルしています

フー。

Foo.m

main.m

0 投票する
2 に答える
567 参照

iphone - ObjC++のプライベートメソッド

C ++フレームワーク(Box2D)を使用しているため、ObjCクラス実装ファイルの名前を*.mmに変更する必要があります。ファイルの名前を変更し、ファイルタイプを「sourcecode.cpp.objcpp」に設定した後、次のプライベートメソッドの宣言により、次のようなエラーが発生します。

エラー:「プライベート」の前に識別子が必要です

メソッドの宣言:

ObjC ++でプライベートメソッドの宣言を使用するにはどうすればよいですか?

0 投票する
1 に答える
545 参照

c++ - C ++初期化子はObjective-C合成プロパティで呼び出されますか?

C ++初期化子はObjective-C合成プロパティで呼び出されますか?同じタイプ(C ++)の別のオブジェクトから作成するためのカスタム初期化子を作成する場合、合成されたプロパティセッターはその初期化子を呼び出しますか?