0

我一直在寻找解决我的困境的答案,我相信这是由于我难以适应 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

4

3 回答 3

0

我发现我的问题不是我使用的变量的 ARC。相反,App Delegate 中的通知设置没有与 IBOutlets / ViewController 的 UILabel 正确通信。很抱歉给大家带来了痛苦。

于 2011-08-04T19:39:49.063 回答
0

这与作为测试版 iOS 无关。

在您的标题中,您是否定义UILabel以及使用@property/ @synthesize

此外,self.从标签中删除 。

于 2011-08-04T19:43:07.990 回答
-1

iOS5 仍处于保密协议下。如果您是注册开发者,请在 beta Apple 论坛中提问。

于 2011-08-02T19:55:23.350 回答