[解決済み] Objective-cの「インスタンス変数」と「プロパティ」は違うのですか?
2023-07-07 14:53:48
質問
Objective-cのインスタンス変数とプロパティは違うのでしょうか。
あまり自信がないのですが。私は、quot;property"は、アクセッサメソッドを持つインスタンス変数だと思うのですが、間違っているのでしょうか?
どのように解決するのですか?
プロパティとは、より抽象的な概念です。インスタンス変数は文字通り、構造体のスロットのような、単なるストレージスロットです。通常、他のオブジェクトがそれらに直接アクセスすることは想定されていません。一方、プロパティはオブジェクトの属性であり、アクセスすることができます(曖昧に聞こえますが、そうなっています)。通常、プロパティはインスタンス変数を返したり、設定したりしますが、いくつかのデータを使用することもできますし、全く使用しないこともできます。例えば
@interface Person : NSObject {
NSString *name;
}
@property(copy) NSString *name;
@property(copy) NSString *firstName;
@property(copy) NSString *lastName;
@end
@implementation Person
@synthesize name;
- (NSString *)firstName {
[[name componentsSeparatedByString:@" "] objectAtIndex:0];
}
- (NSString *)lastName {
[[name componentsSeparatedByString:@" "] lastObject];
}
- (NSString *)setFirstName:(NSString *)newName {
NSArray *nameArray = [name componentsSeparatedByString:@" "];
NSArray *newNameArray [[NSArray arrayWithObjects:newName, nil] arrayByAddingObjectsFromArray:[nameArray subarrayWithRange:NSMakeRange(1, [nameArray size]-1)]];
self.name = [newNameArray componentsJoinedByString:@" "];
}
- (NSString *)setLastName:(NSString *)newName {
NSArray *nameArray = [name componentsSeparatedByString:@" "];
NSArray *newNameArray [[nameArray subarrayWithRange:NSMakeRange(0, [nameArray size]-2)] arrayByAddingObjectsFromArray:[NSArray arrayWithObjects:newName, nil]];
self.name = [newNameArray componentsJoinedByString:@" "];
}
@end
(注意: 上記のコードは、名前がすでに存在し、少なくとも 2 つの構成要素を持っていると仮定している点でバグがあります (たとえば、単なる "Gates" ではなく "Bill Gates" などです)。これらの仮定を修正すると、コードの実際のポイントが不明確になると思ったので、誰も無邪気にこれらの間違いを繰り返さないように、ここでそれを指摘しているだけです)。
関連
-
[解決済み] Objective-Cの定数
-
[解決済み] Objective-Cで乱数を発生させる
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] performSelectorのセレクタが不明なため、リークが発生する可能性があります。
-
[解決済み] Objective-Cで抽象クラスを作成する
-
[解決済み] objective-cのYES/NO,TRUE/FALSEと真偽の差はあるのか?
-
[解決済み] Objective-Cのクラス→文字列のようなものです。[NSArray className] -> @"NSArray" のようになります。
-
[解決済み] フォーマット文字列, 先頭のゼロを含む整数
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] IOSのUIViewからアプリケーションのドキュメントフォルダに画像を保存する
-
[解決済み] ベストプラクティス - 自分のプロジェクト/アプリのためのNSErrorドメインとコード
-
[解決済み] キーチェーンのアイテムは何がユニークなのか(iOSの場合)?
-
[解決済み] iOSアプリ:通知を消去するには?
-
[解決済み] Objective-Cでnilにメッセージを送信する
-
[解決済み] Objective-Cでクラスのインスタンスを@protocolにキャストする
-
[解決済み] NSStringの最初の3文字を取得するには?
-
[解決済み] Xcodeでプリプロセッサ・シンボルを定義する方法
-
[解決済み] UIButtonのテキストを変更する
-
[解決済み] Xcodeの "unused variable "の警告を消すにはどうしたらいいですか?