問題タブ [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 - Swiftでクラスインスタンスをコピー可能にする方法は?
Objective-C では、NSCopying と copyWithZone: を実装することで、クラス インスタンスをコピー可能にすることができます。Swiftで(Foundationを使用せずに)同様のことをどのように行いますか?
objective-c - C スタイルの配列を解放するにはどうすればよいですか?
QuantumClone
sの配列を持つクラスがありますCGPoint
。単一のQuantumPilot
オブジェクトは、QuantumClone
各レベルの最初に を作成します。次のレベルでは、QuantumPilot
は速度を に記録しますQuantumClone
。新しいレベルの開始時に、ゲーム ループはこのコードを実行します
しかし最終的にはゲームがリセットさQuantumClone
れ、クローンの各オブジェクトNSMutableArray
が削除されます。
に値を代入してメモリ リークを起こしていCGPoint pastVelocities[4551]
ますか?
これらをリセットするにはどうすればよいですか? それらは Objective-C オブジェクトではないため、解放できません。このメモリを解放するために C 関数を呼び出す必要がありますか?
cocoa - 既存の NSCoding メソッドを使用して NSCopying を実装しない理由
NSCoding を実装するクラスが与えられた場合、 copyWithZone: の実装をこのパターンを使用して実装してはならない理由はありますか?
objective-c - NSDictionary のキーが NSCopying に準拠しなければならない理由
NSDictionary
オブジェクトが のキーになるには、に準拠する必要があることに気付きましたNSCopying
。
これはなぜですか?すべてのキーを実装する必要があることは理解できますhash
が、なぜNSCopying
ですか?
ios - PFObject のコピーの作成
私は、ユーザーが a をダウンロードしPFObject
てローカルで変更できるようにし、変更をキャンセルするか、[完了] を押すと、編集インターフェイスを閉じますが、変更を Parse にまだアップロードしない状況にあります。すべての変更を一度にデータベースに書き込むには、前の画面で [保存] をクリックする必要があります。
問題は、PFObject
が変更されると、データベースから再取得しない限り、以前の状態に戻すことができないことです。しかし、以前の状態がまだ Parse にアップロードされていない可能性があるため、Cancel を押すたびにデータベースからデータを再取得できるとは限りません (これは、ローカルにのみ保存されている変更を破棄するのを待たせる悪い UX です)。
たとえば、ユーザーが をタップして編集しPFObject
、変更を加えて [完了] をクリックし、もう一度タップしてオブジェクトをさらに編集し、[キャンセル] をクリックしたとします。この場合、オブジェクトを以前の状態に戻す必要がありますが、その状態はまだ Parse にアップロードされていません。したがって、データベースからデータを再フェッチして変更を元に戻すことはできません。そうしないと、最初に行った変更が上書きされます。
この問題を解決するには、単純に を取得してPFObject
そのコピーを保存します。私はそれを一時的なオブジェクトと呼んでいます。実際のオブジェクトを格納する別のプロパティがあります。ユーザーは一時的なオブジェクトを変更し、[キャンセル] を押したときに単純に に設定しnil
、代わりに [完了] を押した場合は、実際のオブジェクトを一時的なオブジェクトに等しく設定し、最後に [保存] をクリックすると、実際のオブジェクトをに保存します。データベース。そうすれば、ユーザーが変更をコミットするまで、実際のオブジェクトに変更が加えられないことを確認できます。問題は、プロトコルPFObject
を採用していないNSCopying
(理由がわからない) ため、のコピーを作成できないことPFObject
です。それに加えた変更は、実際のオブジェクトに影響します。
データがコミットされ、後で保存されるタイミングを制御できるアプリの設計を変更せずに、これを解決するにはどうすればよいでしょうか? を拡張PFObject
して採用する方法はありNSCopying
ますか?以前に行われたことがありますか?
オブジェクトの属性をディクショナリに保存することを検討し、代わりにユーザーがそれを編集できるようにし、コミット時にそれらの属性のそれぞれをPFObject
. このソリューションの問題は、複雑な構造で発生します。このアプリでは、ユーザーが複数の を含む複数PFObject
の配列を変更できるようにします。単一の単純なPFObject
.
ios - 空の配列をコピーする意味は?
私は別のプログラマーのコードを読んでいたので、これを見つけました:
何かのトリックですか?なぜ彼は不変配列に mutableCopy を使用したのassets
ですか? なぜ彼はそれを次のように作成しないのですか:
?