としては、ここで説明しますNSStringでは、長さは属性か関数ですか?
str.length vs [str length]
は、長さ属性やメソッドのですか? 正しい実装はどれですか?
は、この標準のiOS書いている:
if([self.clientNumberTxtField.text length] == 0)
としては、ここで説明しますNSStringでは、長さは属性か関数ですか?
str.length vs [str length]
は、長さ属性やメソッドのですか? 正しい実装はどれですか?
は、この標準のiOS書いている:
if([self.clientNumberTxtField.text length] == 0)
length
はプロパティです。したがって、あなたが行うことができます:
NSInteger len = str.length;
しかし、あなたが知っておくべきように、プロパティは、setterメソッドとgetterメソッドのいくつかの適切な組み合わせと一般的にインスタンス変数のためだけの見せかけの構文です。このプロパティの「ゲッタ」メソッドを取得したので、次の操作を行うこともできます。
NSInteger len = [str length];
両方とも完全に有効です。それは個人的な好みの問題です。 Objective-Cで
、プロパティはyou.For例えば2つのデフォルトのメソッドを作成します。
@property (nonatomic) NSUInteger length;
// then you will get two methods
- (NSUInteger)length;
- (void)setLength:(NSUInteger)length;
をだからあなたは次のように呼び出すことができます。
[str length];
他のコメンターが指摘するように、長さがありますNSStringの読み取り専用プロパティです。実装は私たちには隠されていますが、変数をサポートする変数がないと考えることができます。他のデータメンバー(文字列の文字)から計算されます。したがって、私はそれが属性よりも機能のようだと言って答えるだろうが、これは学問的なもので、客観的なCは私たちに計算を実行するか、または基礎となるデータメンバーを返すかもしれないし、ちょうどそれを使用して:)。ベスト
PsのmyString.lengthは、[のmyString長]のためだけ速記で、私は、彼らはまったく同じこと
length'は 'ので、あなたの答えは、最良の例ではないにコンパイルすることをお好きな賭けを取ると思います読み取り専用では 'setLength:'メソッドはありません。 – rmaddy
@rmaddy申し訳ありませんが、私の答えを更新しました。 – Lumialxk
あなたのアップデートは 'NSString length'が読み取り専用であるという事実を変更しません。読み書き可能なプロパティから2つのメソッドをデモンストレーションする場合は、別の例を示すことができます。ちょっとした考え。 – rmaddy