[解決済み] NSArrayにc-structを格納する最も良い方法は何ですか?
質問
c-structuresを格納する通常の方法は何ですか?
NSArray
? 利点、欠点、メモリ処理?
特筆すべきは
valueWithBytes
と
valueWithPointer
--以下、justinとcatfishが提起。
以下はリンクです。
に関する Apple の議論へのリンクです。
valueWithBytes:objCType:
へのリンクです。
水平思考とパフォーマンスをより重視するために、Evgen は
STL::vector
で
C++
.
(これは興味深い問題を提起します: 高速な c ライブラリはありますか?
STL::vector
とは違って、もっとずっと軽くて、最小限の "tidy handling of arrays" を可能にする高速な C ライブラリはないのでしょうか...?)
では、最初の質問ですが...
例えば
typedef struct _Megapoint {
float w,x,y,z;
} Megapoint;
では、このような自分自身の構造を
NSArray
に格納する方法、そしてその方法でメモリをどのように扱うか?
私は構造体を格納するための通常のイディオムを特に探していることに注意してください。 もちろん、新しい小さなクラスを作成することによって、この問題を回避することもできます。しかし、私は実際に構造体を配列に置くための通常のイディオムを知りたいのです。
ところで、これは NSData のアプローチですが、おそらくベストではないでしょう...
Megapoint p;
NSArray *a = [NSArray arrayWithObjects:
[NSData dataWithBytes:&p length:sizeof(Megapoint)],
[NSData dataWithBytes:&p length:sizeof(Megapoint)],
[NSData dataWithBytes:&p length:sizeof(Megapoint)],
nil];
ところで、参考までに Jarret Hardie 氏のおかげで、以下のような方法で
CGPoints
と同様のものを
NSArray
:
NSArray *points = [NSArray arrayWithObjects:
[NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
[NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
nil];
(参照 NSArray に CGPoint オブジェクトを簡単に追加するにはどうすればよいですか? )
どのように解決するのですか?
NSValue
は CoreGraphics の構造体をサポートするだけでなく、独自の構造体にも使用することができます。このクラスはおそらく
NSData
よりも軽量です。
以下のような式を使うだけです。
[NSValue valueWithBytes:&p objCType:@encode(Megapoint)];
そして、値を元に戻すには
Megapoint p;
[value getValue:&p];
関連
-
[解決済み] Cocoa:フレームとバウンドはどう違うの?
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] .NETにおけるstructとclassの違いは何ですか?
-
[解決済み] 構造体のsizeofは、なぜ各メンバーのsizeofの合計と等しくないのですか?
-
[解決済み] C++のstructとclassの違いは何ですか?
-
[解決済み】Objective-Cのコードをユニットテストするのに最適な方法は何ですか?
-
[解決済み] UIPageControlのページネーションドットの色を変更するにはどうしたらよいですか?
-
[解決済み] NSMutableArrayをシャッフルする最も良い方法は何ですか?
-
[解決済み] レビュー待ちの状態でバイナリを拒否する(バイナリ拒否ボタンが見つからない)
-
[解決済み] iOSアプリでターゲットのバージョン/ビルド番号をプログラム的に表示するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] UITextViewのキーボードをリターンキーで解除するには?
-
[解決済み] アプリのプッシュ通知設定をリセットする
-
[解決済み] iPhone Safari ウェブアプリでリンクを新しいウィンドウで開く
-
[解決済み] iPhoneのTableViewのCellの右側に小さな矢印を追加する
-
[解決済み] 再署名 IPA (iPhone)
-
[解決済み] 空のUITableViewを処理する。フレンドリーなメッセージを表示する
-
[解決済み] viewWillAppear:と-viewDidAppear:の違いは何ですか?
-
[解決済み] UIImageViewのコーナー半径の設定がうまくいかない
-
[解決済み] iPhone 5 CSSメディアクエリ
-
[解決済み] NSArrayにCGPointオブジェクトを簡単に追加するには?