我在我的应用程序中偶然发现了一个问题,我的音乐播放器视图控制器需要保留委托(这是一个基于云的歌曲存储)来保留歌曲播放列表,直到选择新文件夹中的歌曲。
因此,当用户在某个文件夹中点击一首歌曲时,我将代理分配给该 ViewController,因此即使从视图中推送它,它也会保留在内存中,以便音乐播放器可以播放下一首和上一首歌曲。但是当用户从另一个文件夹(ViewController)中选择歌曲时,我将音乐播放器委托设置为 nil,并将委托分配给新的 ViewController。
这个解决方案可以接受吗?
代码:
MusicPlayerViewController 有:
@property (nonatomic, strong) id <MusicPlayerViewDelegate> delegate;
当点击单元格(歌曲)时,将从云存储文件夹中加载歌曲的视图控制器具有此调用:
musicPlayerViewController.delegate = nil;
musicPlayerViewController.delegate = self;