は、私が現在読んでいる本は、私は次のコードを記述していますにNSArrayとNSStringの
-(IBAction)displaySomeText:(id)sender {
NSString *cow = @"Milk";
NSString *chicken = @"Egg";
NSString *goat = @"Butter";
NSArray *food = [NSArray arrayWithObjects:cow, chicken, goat, nil];
NSString *string = @"The shopping list is: ";
string = [string stringByAppendingString:[food componentsJoinedByString:@", "]];
[textView insertText:string];
}
を、私は、配列がどのように動作するか多少理解が、私は次のコードに
string = [string stringByAppendingString:[food componentsJoinedByString:@", "]];
を理解する助けが必要
私は、これが可能な場合を見たことがありません。
彼は私がNSString
クラスから、「文字列」オブジェクトを作成しており、その後、私は混乱している。この
string = [string stringByAppendingString:];
をやっています。私はオブジェクトを作成し、同じオブジェクトに対してメソッドを実行し、そのオブジェクトとまったく同じオブジェクトに格納する例を見たことがありません。
例えば、私は私が作成したオブジェクトを使用し、その上にクラスメソッドを実行した。..
が、私は常に同等と仮定しているため、この
NSSound *chirp;
chirp = [NSSound soundNamed:@"birdChirp.mp3"];
上記は理にかなって行うことができます知っています次のコードは不可能でした
chirp = [chirp methodNameEtc..];
私は私の質問をよく説明しました。そうでなければ、私はいつももっと詳しく説明することができます。
はい、ありがとうございます。これはこれまでのところ最高の答えです。あなたはすべてのことを見てうれしいよ、笑。 ありがとうございます。 –
この質問はダムと聞こえるかもしれませんが、ObjCではあまりプログラムしません。文字列は不変なので、元の文字列オブジェクトにポインタがないのでメモリリークが発生しません(stringByAppendingStringは新しい文字列オブジェクトを返すので) ? – styfle
はい。古い文字列は、あなたが言うように逆参照されています。逆参照されたオブジェクトがオートリリースされている場合や 'NSString * cow = @" Milk "のように作成されたストリングリテラルの場合は、メモリリークのような文字列の場合は問題ありません。興味深いことに、このサイトのほとんどのメモリリークの質問は、ポインタとオブジェクトを混乱させる人々のようです。 – NJones