問題タブ [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++ - 言語混合: モデルとビュー
モデルが C++ (Boost を使用) で記述され、ビューが Objective-C++ (Cocoa Touch を使用) で記述されるアプリケーションの開発を検討してください。
iPhone アプリケーションを開発するために C++ と Objective-C++ を統合する方法を示す例はどこにありますか?
objective-c - すべての Objective-C の alloc/allocWithZone/dealloc を追跡します
説明が長くて申し訳ありませんが、質問はそれほど簡単ではありません...
私のプロジェクトはGCなしで書かれました。最近、見つけられないメモリ リークが見つかりました。結果なしで新しいXcode Analyzerを使用しました。コードを 1 行ずつ読み、すべての alloc/release/copy/autorelease/mutableCopy/retain と pools を確認しました... - まだ何もありません。
前文: Standard Instruments と Omni Leak Checker が何らかの理由で機能しません (Omin Tool がアプリを拒否し、Instruments.app (Leaks) がメモリと CPU を大量に消費するため、使用する機会がありません)。
だから私は自分のコードを書いて使って "all" alloc/allocWithZone:/dealloc メッセージの統計をフックして追跡し、いくつかの単純な独自のリークチェックライブラリを書きたいと思っています (主な目標は、オブジェクトのクラス名にリークの可能性をマークすることだけです)。
私が使用する主なフッキング手法:
- このようなコードで alloc メソッドをフックし、NSObject カテゴリ メソッドとして dealloc を割り当てます。
以前のメソッドの実装のために IMP を保存し、すべての alloc/allocWithZone: 呼び出しをインクリメント (+1) stat-array NSInteger 値として登録および計算し、dealloc 呼び出しをデクリメント (-1) として呼び出します。
エンドポイントとして、以前の実装を呼び出して値を返します。
コンセプトとしては、すべて問題なく動作します。
必要に応じて、クラスがクラス クラスター (NSString、NSPathStore2、NSDate、__NSCFDate など) の一部であることを検出することもできます... 正規化関数を使用します (ただし、以下で説明する問題については問題ありません)。
ただし、この手法にはいくつかの問題があります。
- すべてのクラスをキャッチできるわけではありません。たとえば、[NSDate date] は alloc/allocWithZone でキャッチされません: まったく、しかし、GDB で alloc 呼び出しを確認できます
- 自動シングルトン検出手法 (retainCount readind に基づく) を使用して、一部のオブジェクトを最終統計から自動的に除外しようとしているため、完全な Cocoa アプリケーション (実際には、単純な Objective-C コマンド ラインでさえも) を開始すると、NSLocale の作成が初期化前の段階でフリーズしますFoundation フレームワークが含まれているユーティリティには、main()) の前にいくつかの追加の初期化があります - GDB によって allocWithZone: が次々に呼び出されます....
ここにアップロードされた完全なコンセプト プロジェクト ドラフト ソース: http://unclemif.com/external/DILeak.zip (3.5 Kb)
Terminal.appからmakeを実行してコンパイルし、 . /conceptを実行して動作を確認します。
最初の質問: alloc & allocWithZone: メソッドをフックしても、すべてのオブジェクト割り当てをキャッチできないのはなぜですか?
2 番目の質問: allocWithZone をフックする理由: 一部のクラスの CFGetRetainCount (または [inst preserveCount]) でフリーズする...
iphone - assert が iPhone 用にコンパイルされたプログラムを単純に終了させるのはなぜですか?
assert() を多用した iPhone アプリ (Xcode、Objective-C++、およびデバイス シミュレーター) をデバッグしています。場合によっては、アサートの失敗により、期待どおりにデバッガーに侵入するのではなく、アプリが終了するだけでした。
私は次のような独自のアサートを実装することで回避策を作成しました。
(毛羽立ち省略)ですが、これに遭遇した人はいるのだろうか。いつ壊れていつ終了するかについてのパターンを特定できませんでした。コードはスレッド化されていません。行うことはすべて、イベント ハンドラーで行われます。
なぜこれが起こるのですか?どうすればバニラ assert() を条件付きブレークポイントのように動作させることができますか?
iphone-sdk-3.0 - Objective C で c++ テンプレート クラスを使用する方法
Objective C プロジェクトで C++ の Template クラスを使用したいと考えています。サポートされていることを確認しました。
C++ で記述されたテンプレート クラスをインポートしようとすると
、'クラス' のプロトコル宣言が見つかりませんなどのような多くのエラーが発生します。
誰でも簡単な例を教えてください。
返事を待っています。
c++ - ココアとObjective-C++
私は、Cocoa との関連で Objective-C++ がどのように機能するかを理解していると思います。また、コマンドライン C++ の基本についてはかなり精通していますが、Objective-C と組み合わせてみるのはちょっと怖いです。Xcode で Interface Builder を使用して GUI を作成し、インターフェイスのクラス (.h および .m ファイル) を自動的に作成することもできます。アウトレット、おそらくアクション (私はまだ混乱しています) は、中括弧を開いたままにして、独自のコードを挿入します。したがって、それらのボタンから入力を取得する (そして出力などを確認する) ために、これらの括弧に C++ コードを入れることができます。 ?
この場合、C++ コードをどこに置くかを知っている限り、Obj-C を学ぶ必要はないと思います! 私が間違っている?
また、誰かがそれを理解するのを手伝ってくれますか、少なくともこれについてもっと学ぶことができる場所を教えてくれますか? このトピックは Web 上ではほとんど見られず、Apple のドキュメントも理解できません。
objective-c - Objective-CとObjective-C2.0の違い
同じ日に来た図書館の本を2冊予約しました。私はそれらを棚で見て、1つはObjCに関するもので、もう1つはObjC2.0に関するものであることを除いて同じであることに気づきました。
また、Objective-C ++とは何ですか?
iphone - Objective-C++ 言語: 詳細情報はどこにありますか?
私はここ数か月 C++ を学んでいますが、その利点はあるものの、C++ は優れた言語であることがわかりました。
いわゆるObjective-C++とは正確には何なのか、Apple 環境 (つまり、Mac OS X、iPhone OS) を対象とする主要な開発言語として学ぶ価値があるかどうか疑問に思っていました。主にウィキペディアのエントリとMac Dev Centerのエントリです。
ウィキペディアは次のように述べています。
Objective-C++ は、C++ と Objective-C 構文の組み合わせを使用するソース ファイルをコンパイルできる GNU Compiler Collection のフロントエンドです。Objective-C++ は、Objective-C が C に追加する拡張機能を C++ に追加します。
Mac Dev Center の記事には次のように追加されています。
Apple の Objective-C コンパイラを使用すると、C++ と Objective-C のコードを同じソース ファイルに自由に混在させることができます。この Objective-C/C++ 言語ハイブリッドは、Objective-C++ と呼ばれます。これにより、Objective-C アプリケーションから既存の C++ ライブラリを利用できます。
Apple の記事では、Objective-C++ を言語と呼んでいます。これは正しいですか?
次のことを知りたいです。
- C/Objective-C を知らなくても、Objective-C++ を学習して使用することは可能ですか?
- より多くの情報やヘルプを得ることができる良い本、サイト、フォーラムなどはありますか?
- あなたが知る限り、Objective-C++ で行われた大きなプロジェクトはありますか?
c++ - const char* 文字列を長さとエンコーディングで NSString に変換します
const char* 文字列を NSString に変換するには、どの方法が良いのだろうか。
いくつかの事実があることがわかりました。
- [NSString stringWithCString:length:] は一種の非推奨です。
- [NSString stringWithCString:encoding] は私の目的に使用できます
しかし、私は長さとエンコーディングで変換したいです(エンコーディングをUTF-8に設定することで非ASCII文字がある場合はそれをうまくしたいからです)。何かご意見は?
今思うだけ
- std::strncpy(ch1, ch2, len) を使用して、別の char を作成し、長さでコピーします
- [NSString stringWithCString:encoding:] を使用
しかし、うまくいきません。
xcode - 特定のファイルのxcode「コンパイルソース」オーバーライド
「コンパイル ソース」の値を「Objective-C++」に設定する必要があるプロジェクトがあります (いいえ、「ファイル タイプに応じて」はメイン プロジェクトでは機能しません)。フレームワーク (具体的には OpenFeint) から取得したファイルに問題があり、「Objective-C++」としてコンパイルするとコンパイル エラーが発生します。
「コンパイルソースとして」値の「ファイルタイプに応じて」に設定されたテストプロジェクトでコンパイルするファイルを取得できます。だから、特定のファイルをObjective-Cとしてコンパイルするように設定する方法を知りたいですか? この 1 つのファイルを実際のプロジェクトで Objective-C としてコンパイルすることができれば、すべてが完全に調和して動作するはずです。
どんな助けでも大歓迎です。
ありがとう!
c - Objective-C ++クラスのメソッド本体からクラシックC関数を呼び出すことは禁止されていますか?
Objective-C++の奇妙な動作を経験しました。私はObjective-C++クラスを持っており、メソッド本体で従来のC関数を呼び出します。しかし、リンカはC関数を見つけることができません。
ここで問題を説明しました: Objective-Cメソッド本体で使用されたC関数のXcode印刷シンボルが見つかりません
Objective-C ++クラスをObjective-Cクラスに変更することで問題を解決しましたが、問題はまだ残っています。Objective-C ++クラスでC関数を呼び出すことは禁止されていますか?