問題タブ [nscopying]
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.
swift - 初期化子の迅速なコピー属性
後でそれらの属性を設定するだけでなく、初期化子に渡されたオブジェクトがコピーされるようにするにはどうすればよいですか?
を使用する@NSCopying
と、Apple はcopy
プロパティのような動作を実現できると言います。ただし、デフォルトでは、コピーを行うセッターを呼び出さずに、属性が割り当てられるだけです。
プロパティが不変であり、知らないうちに変更されていないことに依存したいので、これは潜在的に危険です。(NSMutableString
代わりに取得するNSString
ことを考えてください-コピーすると不変のインスタンスが得られます)。
ios - Swift 2.0 で copyWithZone を実装するには?
次のコードは、配列を作成するために Swift 2.0 で記述されています。dispatch_block_t
また、Block
クラスは次のように定義されています。
上記のコードを使用して、dispatch_block_t の配列を作成できます。しかし、この配列をパラメーターとして別の関数に渡す必要があり、この配列を渡す際に問題に直面しています。
ボタンクリックイベントでこの関数を呼び出していますが、
そして、次のスニペットを実行するとエラーが発生します。
エラーは、
タイプ '() -> ()' (0x15164018) の値を 'Swift.AnyObject' (0x101e500c) にキャストできませんでした。
クラスcopyWithZone
の関数でこのエラーが発生しています。Block
btSimplePopUp の完全なソース コードは、 https: //github.com/balram3429/btSimplePopUp/blob/master/btSimplePopUp/btSimplePopUP.m で確認できます 。
nsdictionary - NSDictionary からカスタム クラスへ
私は、次のようなsqliteデータベースに保存しているカスタムクラスQBChatDialogオブジェクトを持っています
次に、データベースから NSDictionary として取得しています。
QBChatDialog
またはのような値を取得するために、クラスにマップし直すにはどうすればよいですdialog.ID
かdialog.lastMessageText
。クラスはサードパーティ API で、一部のプロパティはread-only
.
ありがとう
swift - swift - HMCharacteristicWriteAction の HomeKit updateTargetValue がクラッシュする
アクション ( ) のターゲット値を更新しようとしていますHMCharacteristicWriteAction
が、常に EXC_BAD_ACCESS (コード = 1、アドレス = 0x50) でクラッシュします。
私のコードスニペット:
ご覧のとおり、action
は nil ではなく、正しい型 ( HMCharacteristicWriteAction
) です。正常に読み取ることができますtargetValue
。
を使用してプロジェクトを分析しましたProduct - Analyze
。すべて問題ありません (警告はありません)。ゾンビも有効にしましScheme - Diagnostics
たが、まだうまくいきません。
ドキュメントによるとupdateTargetValue
:
私を混乱させるのはtargetValue: NSCopying
. タイプInt
はvalue
「NSCopying」に準拠していますか? 試しvalue as NSCopying
てみましtargetValue
たが、良くありません。
この問題を解決する方法を教えてください。Int
toを渡しても大丈夫targetValue
ですか?このクラッシュの原因は何ですか?
ありがとうございました。
ios - 変更可能なコピーを作成するための Objective-C パターン
プロパティが「読み取り専用」として定義され、さまざまなコンポーネント間で共有される「モデル」オブジェクトが多数あります。
場合によっては、オブジェクトのローカルで変更可能なコピーを作成する必要があります (それらをローカルで変更可能な状態に使用します)。
オブジェクトは作成後に不変でなければならないため、NSMutableCopy プロトコルを実装しません。変更されたオブジェクトは、コピー + 変更操作の後に「受け渡される」可能性があります。
提案されたメカニズムはありますか、または「変更された」パラメーターを受け取るコンストラクターを実装する必要がありますか?
たとえば、JSON をネイティブ タイプに解析するオブジェクト:
コードのどこか:
objective-c - オブジェクト間でブロックをコピー
私はいつも、それcopy
はオブジェクトをコピーするだけだと思っていました。ブロックの場合は少し違いますが、以下の場合の動きには本当に驚きました。
次のクラスのインスタンスとインスタンスがありますobjectA
。objectB
objectA
空です。objectB
値が設定されています。objectB
アプリのある時点で、破棄して のみを残したいobjectA
ので、 to の次の 2 つの値を注入する必要がありobjectB
ますobjectA
。
objectA
ブロックが新しいインスタンスにコピーされ、objectB
解放されることを期待しています (それを指す参照がないため)。
しかし、代わりに、何も起こりません。ブロックは、評価される必要がありますが、再度評価されることはありません。別の方法でコピーする必要がありますか?誰かが何が起こっているのか、なぜ起こっているのかを説明したり、それを説明するドキュメントを指摘したりできますか?
- 編集 -
ブロックの設定方法のスニペット: