問題タブ [unsafe-pointers]

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 投票する
0 に答える
74 参照

ios - Swift 3 のデータ、UnsafeMutablePointer、および拡張属性

Swift 2 では、拡張属性を操作するための NSURL 拡張機能があり、これには次のものが含まれていました。

今、私はそれを Swift 3 に変換しようとしていますが、Xcode は不平を言い続けています。

最初の 2 つの関数を次のように変更しましたが、正しく行っているかどうかはわかりません。

最初の関数でそこにキャストDataする必要がありますか? NSDataこれについてもっと良い方法はありますか?

そして、最後の関数は Xcode によって次のように変換されました。

しかし、私は得る

タイプ '(UnsafeMutableRawPointer!)' の引数リストでタイプ 'UnsafeMutablePointer' の初期化子を呼び出すことはできません

そして、私は何をすべきかわかりません。また、Xcode の変換は に固執しNSStringます。あそこ使えないのString

まだ明らかでない場合は、自分が何をしているのかわかりません(笑)。元のコードはthismallocに基づいていましたが、そのすべてがどのように機能するのか理解できませんでしlengthbytesDataなどのドキュメントを読んでみUnsafeMutablePointerましたが、あまり役に立ちませんでした。

誰かがこのコードを変換するのを手伝ってくれたら本当に感謝していますが、これをすべて理解するために正しい方向に私を向けるだけでも、すでに大きな助けになります. 他にどこを見ればいいのかわからず、そのすべてが本当に不可解に思えます。私が見つけた最近のいくつかの情報源は、私が知らないことをたくさん知っていると仮定しており、何を探すべきかさえ知りません.

ありがとう!

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

ios - Swift 3 の UnsafePointer

この質問が何度か聞かれたことは知っていますが、本当に理解できません。

Bluetooth デバイス (miband) から値を抽出したい。Swift 2では、次のように機能しました:

しかし、Swift 3 ではエラーがスローされます。

そして、それをSwift 3に移行する方法がわかりません。

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

ios - NSMutableData の UnsafeMutableRawPointer へのバイトが mutableData の値を更新しない

私は構造体オブジェクトを持っています。入力がペイロードであるメソッド。現在、という名前の mutableData を作成していpacketます。その可変バイトは ICMPHeader 構造体を参照しています。

可変バイトは正常に構造体にバインドされ、値も構造体で更新されていICMPHeaderます。

問題は、構造体の値を変更しても可変データの値が変更されないことpacketです。

また、構造体を作成した後にパケットを再作成しようとすると、クラッシュします。

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

swift - Swift 3 で __NSMallocBlock__ を基になる型にキャストするにはどうすればよいですか?

Swift 2.xで機能するテストを支援するトリックがありました:UIAlertController

これは Swift 3.x で失敗しますfatal error: can't unsafeBitCast between types of different sizes。誰でもそれを理解できますか?

0 投票する
0 に答える
1738 参照

swift - Swift 3 で UnsafeBufferPointer をデータに変換する

UnsafeBufferPointer からデータを初期化しようとしていますが、3 行目に到達すると EXC_BAD_ACCESS がスローされます。助けていただければ幸いです。

私の最終的な目標は、データのビットを人間が読める形式に変換することです (たとえば、15 のビット パターンを "F" に変換します)。データ オブジェクトから文字列を 16 進数値として初期化することを望んでいました。私はこれについてのより良い、正しい方法を受け入れています。

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

swift - swift3 でのバイトの使用

'bytes' は使用できません: 代わりに withUnsafeBytes を使用してください

しかし、私はそれを使用する方法がわかりません

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

swift - UnsafePointer<[Float]> を変換する方法、または Float Array データを Unsafe[Mutable]Pointer に適合させる方法スウィフト3で?

HDF5 ファイルからの float 値 ( floatArray) の配列があり、このデータを Unsafe[Mutable]Pointer ( ) を受け入れる関数の入力として使用したいと考えていますinputForFunction。UnsafePointer は初めてなので、誰かの助けが必要です。

私が念頭に置いている1つの方法は、配列をファイルに保存してから開き、ファイル記述子を関数の入力用の変数のメモリにマップすることです。

ただし、データを格納するプロセスには時間がかかるため、最適な実装ではない可能性があります。

そのため、 UnsafePointer を使用して からfloatArrayへのポインターを渡すことを検討していますinputForFunctionが、実装方法がわかりません。参考までに、私が考えている 1 つの方法は、withUnsafePointerメソッドを直接使用することです。

または他の方法は使用することですwithMemoryRebound(ただし、次の方法は機能しませんでした):

私の質問は

  • floatArrayのデータのアドレスを に渡すにはinputForFunction?
  • UnsafePointer<[Float]> から Unsafe[Mutable]Pointer に変換する必要がある場合、どうすればいいですか?
  • withMemoryRebound必要な場合、この目的のためにどのように使用しますか? inputForFunctionアドレス/値をクロージャー内に割り当てることはできますか?
  • floatArrayとのアドレスを確認したところ、floatArray[0]異なっていました (C/C++ とは違うようです)。どのアドレスに渡す必要がありinputForFunctionますか?