[解決済み] [Solved] NSString property: copy or retain?
2022-04-14 22:23:42
質問
というクラスがあるとします。
SomeClass
を持つ
string
プロパティ名です。
@interface SomeClass : NSObject
{
NSString* name;
}
@property (nonatomic, retain) NSString* name;
@end
名前が割り当てられることがあると理解しています。
NSMutableString
この場合、誤った動作につながる可能性があります。
-
文字列全般について
常に
を使うのは良いアイデアです。
copy
属性の代わりにretain
? - コピーされたプロパティは、保持されたプロパティよりも効率が悪いのでしょうか?
どのように解決するのですか?
に準拠した不変の値クラスを型とする属性の場合、その型は
NSCopying
プロトコルを使用する場合、ほとんどの場合
copy
の中で
@property
の宣言があります。 指定する
retain
は、このような状況ではほとんど必要ないものです。
なぜそうしたいのか、その理由を説明します。
NSMutableString *someName = [NSMutableString stringWithString:@"Chris"];
Person *p = [[[Person alloc] init] autorelease];
p.name = someName;
[someName setString:@"Debajit"];
の現在の値は
Person.name
プロパティが宣言されているかどうかによって異なります。
retain
または
copy
- になります。
@"Debajit"
と表示された場合、そのプロパティは
retain
しかし
@"Chris"
と表示された場合、そのプロパティは
copy
.
ほとんどの場合
防止する
オブジェクトの属性を背後で変更する場合は、その属性を表すプロパティに
copy
. (そして、もしあなたが
@synthesize
を実際に使用することを忘れないでください。
copy
ではなく
retain
を入れました)。
関連
-
[解決済み] イニシャライザーの要素がコンパイル時定数でない
-
[解決済み] UILabelのフォントサイズ?
-
[解決済み] NSNumberをNSStringに変換する方法
-
[解決済み] NSStringをNSNumberに変換する方法
-
[解決済み] ブロック(__block)」というキーワードはどういう意味ですか?
-
[解決済み] クラスメソッドとインスタンスメソッドの違いは何ですか?
-
[解決済み] Xcode 4でNSZombieEnabledを設定するにはどうすればよいですか?
-
[解決済み】コンパイルの警告:アーキテクチャi386のファイルを処理するルールがない
-
[解決済み】UITableViewからセパレータラインを削除する方法はありますか?
-
[解決済み] [Objective-Cの@propertyのretain, assign, copy, nonatomicについて。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 警告 : フォーマット文字列は文字列リテラルではありません (安全でない可能性があります)
-
[解決済み] クラス 'test_coredataAppDelegate' の重複したインターフェイス宣言
-
[解決済み] .02fと%.2fの違いは何ですか?
-
[解決済み] カスタムメイドのフレームワークで「セレクタ 'Hello:'の既知のクラスメソッドがありません」というエラーが発生する。
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] NSDictionary または NSMutableDictionary にキーが含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Xcode 4でNSZombieEnabledを設定するにはどうすればよいですか?
-
[解決済み] objective-c/cocoaで例外を投げる
-
[解決済み] newの代わりにalloc initを使用する
-
[解決済み】浮動小数点以下が2桁しか表示されないようにする