問題タブ [copywithzone]

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

ios - エラー: 'NSObject' の可視の @interface がセレクター 'copyWithZone:' を宣言していません

クラス オブジェクトのディープ コピーを許可したいので、copyWithZone を実装しようとしていますが、呼び出し[super copyWithZone:zone]でエラーが発生します。

このクラスのディープ コピーを作成するにはどうすればよいですか?

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

objective-c - 「親」プロパティを正しく NSCopying して、既にコピーされた親を指すようにする

クラス B のプロパティを含むクラス A があります。クラス B には、その「親」クラス A への弱い参照があります。両方のクラスが NSCopying を実装しています。

クラス B で NSCopying をどのように実装する必要があるかはわかりません。2 つの明白な選択肢があります。

  1. 親プロパティをコピーしたクラスに割り当てます
  2. 親プロパティをコピーして、コピーしたクラスに割り当てます

最初のケースでは、B の親プロパティは元の A を指します。2 番目のケースでは、親プロパティは完全に新しいコピーです。

NSCopying のプロセス中に親プロパティが新しく作成された A のコピーを指すように、クラス B を正しくコピーするにはどうすればよいですか?

最も簡単な方法は、クラス A の copyWithZone: から親プロパティを更新することだと思います。しかし、クラス B 内からそれを行う方法はありますか?

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

ios - mutableCopyWithZone と copyWithZone を適切に実装する方法

私はそれについて他のいくつかのトピックを読みましたが、それでも私は迷っています.

「読み取り専用」プロパティのみを持つ不変オブジェクトと、「読み取り書き込み」プロパティのみを持つ可変オブジェクトの 2 種類のオブジェクトを作成したいと考えています。

それらを EXCar と EXMutableCar と呼びましょう。

EXCar は NSObject のサブクラスで、EXMutableCar は EXCar のサブクラスです。

ExCar はそのインターフェースに

EXMutableCar はそのインターフェースに

そのため、サブクラスの EXMutableCar を使用するときに、EXCar のプロパティを「開きます」。そして、それは可変です。問題は、それらの間で適切にコピーすることです。

EXCar に mutableCopyWithZone を実装しました:

最初の質問、それは良い方法ですか?(ツバメコピーが欲しい)

問題は copyWithZone にあります。EXCar のプロパティは読み取り専用であるため、EXCar でも EXMutableCar でも EXCar の新しいインスタンスを作成して、そのプロパティを次のように入力することはできません。

そして、15 個のプロパティを渡す "init" メソッドを実際に実行したくはありません (確かに、EXCar は一例です。実際のクラスは多くのプロパティでいっぱいです)。また、通常はサーバーからの JSON メッセージから開始されるため、複雑な init メソッドは必要ありません。

2番目の質問はそうです、私のクラスを不変に保つ copyWithZone を行う方法は?

ご協力いただきありがとうございます :)

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

objective-c - ディープ コピー - copyWithZone のこれら 2 つの実装は異なりますか?

copyWithZone を実装するための 2 つの少し異なる方法を見てきました。彼らは違うのですか?

最初のコード:

そして2番目のコード

それらが異なる場合、どちらがより正しいですか? 1. 1stの【セルフクラス】と混同しました。Objective C のメタクラスについては知っていますが、そのコードのチャンクで必要ですか? 2. copy.name = self.name; vs another.obj = [obj copyWithZone: zone] 上記の違いは何ですか?

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

ios - iOSでコアデータを取得したいときのエラー

マップ ビューでコア データを検索したいのですが、データを検索できません。このエラーが発生するのを助けてください。

その文字列の目的を出力したいとき

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

ios - iOS カスタム オブジェクトのコピー

次を使用してカスタムオブジェクトをロードします。

数回のループで loadNibNamed アクションを 100 回も実行しないようにするために、このオブジェクトを「基本」オブジェクトとして使用し、さまざまな情報を入力しますが、常に同じ設計に基づいています (実際には UICollectionView のように)。

私の最初の動きは、ループに次のようなものを設定することでした:

残念ながら、MyViewItem クラスは「copyWithZone」にアクセスしようとしましたが、実装していませんでした。この時点で、NSObject を継承しようとしましたが (すべての NSObject が「コピー」メソッドを実装していると思います)、問題は同じエラーのままです。そこで、NSCopying を継承し、copyWithZone メソッドを実装しようとしましたが、これは次のとおりです (ただし、機能しません)。

何が欠けていますか?コピーに関する多くの問題を読みましたが、私の問題を解決できませんでした:(ありがとう!

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

ios - UITableViewCell copyWithZone 認識されないセレクターがインスタンスに送信されました

KVO を使用してカスタム tableviewcell (DHtableViewCell) の値を更新しようとしています。このエラーが発生し続けます。これと同じ例外が他にもあることは承知していますが、それらの解決策は役に立ちません。

tableView:cellForIndexPath を実装するクラスは、description というプロパティを設定します。

コードの仕組みは、tableview:cellForIndexpath メソッドで cell.description プロパティを設定することです。次に、オブザーバーは値が変更されたことを確認し、対応する UILabel のテキストを更新します。

私は困惑しています。copyWithZone を呼び出そうとしているのはなぜですか? どうすればこれを回避できますか?