我一直在寻找解决我的困境的答案,我相信这是由于我难以适应 ARC - 我希望在 iOS5 上部署我的应用程序,目前正在 beta4 3GS 上对其进行测试。
当 viewController 被加载 (viewDidLoad:) 我的应用程序 alloc init 是一个 UILabel 并自定义它以将其添加到屏幕顶部:
UIView *navHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 280, 44)];
self.artistLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 2, 280, 15)];
artistLabel.font = [UIFont systemFontOfSize:12];
artistLabel.textColor = [UIColor grayColor];
artistLabel.backgroundColor = [UIColor clearColor];
artistLabel.textAlignment = UITextAlignmentCenter;
[navHeaderView addSubview:artistLabel];
self.navigationBar.topItem.titleView = navHeaderView;
好的,这可以正常工作并通过访问 updateTrack 方法填写相关详细信息:
- (void)updateTrack
{
_player = [MPMusicPlayerController iPodMusicPlayer];
_item = [_player nowPlayingItem];
self._artistString = [_item valueForProperty:MPMediaItemPropertyArtist];
self.artistLabel.text = self._artistString;
}
当使用 NSNotifications 更改音乐播放时调用此方法。然而,artistString UILabel 现在是(null)。我不明白为什么该属性已被释放 - 它在头文件中设置了一个非原子的强属性,并在 .m 文件的顶部合成。
也许我还应该补充一点,一旦应用程序成功加载,我分配给 UIImageView 的 IBOutlet 的非原子强属性也会变为(null),显示专辑封面一次(即,这不是作为子视图添加的)。
任何帮助将不胜感激:D