0

別のクラスに渡すためにいくつかの値を格納する単純なクラスでARCを使用したいと思います。また、プロパティで使用する必要のある参照を知りたいです。ARCで使用するには、次のようにします。

@interface MyItem : NSObject
@property (retain) NSString *valueID;
@property (retain) NSString *itName;
@property (retain) NSDate *creationDate;
@property (assign) float rating;

これは非常に単純なクラスであり、ARCでの使用方法を知りたいです。どの参照を使用する必要がありますか?NSStringなどのコピーを使用する必要がありますか?

編集:

UIViewControllerがあり、NSStringおよびMyItemオブジェクトのプロパティを次のように使用したい場合:

@interface MyViewController : UIViewController

@property (nonatomic, retain) NSString *myString;
@property (nonatomic, retain) MyItem *newItem;

NSStringおよびMyItemオブジェクトにはどのような参照を使用する必要がありますか?

4

2 に答える 2

4

strongの代わりに使用したいretain。そして、はい、あなたはまだsのcopyために使うべきNSStringです。の使用はcopyARCとは何の関係もありません。copy誰かがあなたのプロパティにを割り当てた場合、あなたNSMutableStringはあなたの後ろで文字列を変更したくないので、あなたは欲しいです。を使用copyすると、割り当てが行われた時点での可変文字列の不変のスナップショットが得られます。


これは、ViewControllerの例でプロパティを宣言するための推奨される方法です。

@interface MyViewController : UIViewController

@property (nonatomic, copy) NSString *myString;
@property (nonatomic, strong) MyItem *newItem;

NSStringも宣言できますがstrongcopyほとんどの場合、文字列(および実際には配列や辞書などの可変バリアントを持つ不変タイプ)に適しています。

于 2012-06-25T20:40:31.743 に答える
3

(非原子的、強力)は私が使用するものですが、ここにドキュメントがあります

またはクイックリファレンス

セッターセマンティクス

これらの属性は、セットアクセサーのセマンティクスを指定します。それらは相互に排他的です。

strong宛先オブジェクトとの強い(所有)関係があることを指定します。

weak宛先オブジェクトに対して弱い(所有していない)関係があることを指定します。

宛先オブジェクトの割り当てが解除されると、プロパティ値は自動的にnilに設定されます。

(弱いプロパティはOS Xv10.6およびiOS4ではサポートされていません。代わりにassignを使用してください。)

copyオブジェクトのコピーを割り当てに使用する必要があることを指定します。

前の値にはリリースメッセージが送信されます。

コピーは、copyメソッドを呼び出すことによって作成されます。この属性は、NSCopyingプロトコルを実装する必要があるオブジェクトタイプに対してのみ有効です。

割り当てセッターが単純な割り当てを使用することを指定します。この属性がデフォルトです。

この属性は、NSIntegerやCGRectなどのスカラー型に使用します。

保持割り当て時にオブジェクトに対して保持を呼び出す必要があることを指定します。

アトミシティ

この属性を使用して、アクセサメソッドがアトミックでないことを指定できます。(アトミックを表すキーワードはありません。)

nonatomicアクセサーが非アトミックであることを指定します。デフォルトでは、アクセサーはアトミックです。

于 2012-06-25T20:41:36.423 に答える