假設,你的.h文件看起來像這樣:兩個相互的NSMutableArray對象的變化
@property (retain, nonatomic) NSMutableArray *songs;
- (NSMutableArray *)popularSongs;
- (void)make20PercentDiscountToPopularSongs
你.m文件看起來是這樣的:
- (NSMutableArray *)popularSongs
{
NSMutableArray *popularSongs = [NSMutableArray array];
for (Song *song in self.songs) {
if (song.isPopular) {
[popularSongs addObject:song];
}
}
return popularSongs;
}
- (void)make20PercentDiscountToPopularSongs
{
for (Song *song in self.popularSongs) {
song.price = song.price * 0.8;
}
}
上面的代碼增加了20%的折扣流行歌曲。我承認有一個更簡單的方法來做到這一點。您可以在一個函數中使用「make20PercentDiscountToPopularSongs」和「popularSongs」函數,但假設代碼是按照上面所寫的方式編寫的。
在上面的例子中,將行:
song.price = song.price * 0.8;
其實,做任何修改對象:
@property (retain, nonatomic) NSMutableArray *songs;
與否?因爲,好像該行會更改新創建的流行歌曲NSMutableArray而不是歌曲NSMutableArray,對嗎?這個問題現在困擾了我很多時間。 我想對原始歌曲數組進行更改。對我來說,popularSongs的功能就像存儲指向歌曲數組中歌曲的指針一樣。
好奇,爲什麼歌曲上沒有「流行」標誌或「排名」字段?那麼你只需要一個你可以排序和過濾的數組。 – BergQuester
另外,假設流行歌曲的對象是兩個數組中的相同對象,則只需更改一次該值。 – BergQuester
輝煌但讓我們堅持上面的範例。 –