NSArray -initWithObjects:不存储对象
我从那个构造函数那里得到了一个非常奇怪的输出。它实际上不存储任何对象。我调试了该方法,并且存储的对象已正确初始化。 我使用这个数组在 UITabBarController 上设置 vc,并且选项卡栏是空的。这是代码,
-(void)initBarItemsWithAllFeatures {
/*
Issues
*/
UIImage *issuesImage = [UIImage imageNamed:@"issues_on.png"];
UITabBarItem *issuesTabBarItem = [[UITabBarItem alloc]initWithTitle:NSLocalizedString(@"IssuesTabBarTitle",@"") image:issuesImage tag:0];
[issuesImage release];
issuesNavigationController.tabBarItem =issuesTabBarItem;
[issuesTabBarItem release];
/*
thumbs
*/
ThumbsViewController *thumbsViewController = [[ThumbsViewController alloc]initWithNibName:@"ThumbsViewController" bundle:nil];
UIImage *thumbsImage = [UIImage imageNamed:@"thumbs_on.png"];
UITabBarItem *thumbsTabBarItem = [[UITabBarItem alloc]initWithTitle:NSLocalizedString(@"ThumbsTabBarTitle",@"") image:thumbsImage tag:1];
[thumbsImage release];
thumbsViewController.tabBarItem = thumbsTabBarItem;
[thumbsTabBarItem release];
/*
contents
*/
ContentsViewController *contentsViewController = [[ContentsViewController alloc]initWithNibName:@"ContentsViewController" bundle:nil];
UIImage *contentsImage = [UIImage imageNamed:@"contents_on.png"];
UITabBarItem *contentsTabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString (@"ContentsTabBarTitle",@"") image:contentsImage tag:2];
[contentsImage release];
contentsViewController.tabBarItem = contentsTabBarItem;
[contentsTabBarItem release];
/*
search
*/
SearchViewController *searchViewController = [[SearchViewController alloc]initWithNibName:@"SearchViewController" bundle:nil];
UIImage *searchImage = [UIImage imageNamed:@"search_on.png"];
UITabBarItem *searchTabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString (@"SearchTabBarTitle",@"") image:searchImage tag:3];
[searchImage release];
searchViewController.tabBarItem = searchTabBarItem;
[searchTabBarItem release];
/*
favourites
*/
FavouritesViewController *favouritesViewController = [[FavouritesViewController alloc]initWithNibName:@"FavouritesViewController" bundle:nil];
UIImage *favouritesImage = [UIImage imageNamed:@"favourites_on.png"];
UITabBarItem *favouritesTabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString (@"FavouritesTabBarTitle",@"") image:contentsImage tag:4];
[favouritesImage release];
favouritesViewController.tabBarItem = favouritesTabBarItem;
[favouritesTabBarItem release];
/*
contact
*/
ContactViewController * contactViewController = [[ContactViewController alloc] initWithNibName:@"ContactViewController" bundle:nil];
UIImage *contactImage = [UIImage imageNamed:@"contact_on.png"];
UITabBarItem *contactTabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString (@"contactTabBarTitle",@"") image:contactImage tag:5];
[contactImage release];
contactViewController.tabBarItem = contactTabBarItem;
[contactTabBarItem release];
/*
add to an array
*/
allFeaturesAvailableTabBarItemArray = [[NSArray alloc] initWithObjects:
issuesNavigationController,
thumbsViewController,
contentsViewController,
searchViewController,
favouritesViewController,
contactViewController, nil];
/*
release objects
*/
[thumbsViewController release];
[contentsViewController release];
[searchViewController release];
[favouritesViewController release];
[contactViewController release];
}
提前致谢!
I'm getting a really bizarre output from that contructor. It does not actually store any of the objects. I debugged the method and the objects being stored are initialized properly.
I use this array to set the vc's on a UITabBarController and the tab bar is empty. Here's the code
-(void)initBarItemsWithAllFeatures {
/*
Issues
*/
UIImage *issuesImage = [UIImage imageNamed:@"issues_on.png"];
UITabBarItem *issuesTabBarItem = [[UITabBarItem alloc]initWithTitle:NSLocalizedString(@"IssuesTabBarTitle",@"") image:issuesImage tag:0];
[issuesImage release];
issuesNavigationController.tabBarItem =issuesTabBarItem;
[issuesTabBarItem release];
/*
thumbs
*/
ThumbsViewController *thumbsViewController = [[ThumbsViewController alloc]initWithNibName:@"ThumbsViewController" bundle:nil];
UIImage *thumbsImage = [UIImage imageNamed:@"thumbs_on.png"];
UITabBarItem *thumbsTabBarItem = [[UITabBarItem alloc]initWithTitle:NSLocalizedString(@"ThumbsTabBarTitle",@"") image:thumbsImage tag:1];
[thumbsImage release];
thumbsViewController.tabBarItem = thumbsTabBarItem;
[thumbsTabBarItem release];
/*
contents
*/
ContentsViewController *contentsViewController = [[ContentsViewController alloc]initWithNibName:@"ContentsViewController" bundle:nil];
UIImage *contentsImage = [UIImage imageNamed:@"contents_on.png"];
UITabBarItem *contentsTabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString (@"ContentsTabBarTitle",@"") image:contentsImage tag:2];
[contentsImage release];
contentsViewController.tabBarItem = contentsTabBarItem;
[contentsTabBarItem release];
/*
search
*/
SearchViewController *searchViewController = [[SearchViewController alloc]initWithNibName:@"SearchViewController" bundle:nil];
UIImage *searchImage = [UIImage imageNamed:@"search_on.png"];
UITabBarItem *searchTabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString (@"SearchTabBarTitle",@"") image:searchImage tag:3];
[searchImage release];
searchViewController.tabBarItem = searchTabBarItem;
[searchTabBarItem release];
/*
favourites
*/
FavouritesViewController *favouritesViewController = [[FavouritesViewController alloc]initWithNibName:@"FavouritesViewController" bundle:nil];
UIImage *favouritesImage = [UIImage imageNamed:@"favourites_on.png"];
UITabBarItem *favouritesTabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString (@"FavouritesTabBarTitle",@"") image:contentsImage tag:4];
[favouritesImage release];
favouritesViewController.tabBarItem = favouritesTabBarItem;
[favouritesTabBarItem release];
/*
contact
*/
ContactViewController * contactViewController = [[ContactViewController alloc] initWithNibName:@"ContactViewController" bundle:nil];
UIImage *contactImage = [UIImage imageNamed:@"contact_on.png"];
UITabBarItem *contactTabBarItem = [[UITabBarItem alloc] initWithTitle:NSLocalizedString (@"contactTabBarTitle",@"") image:contactImage tag:5];
[contactImage release];
contactViewController.tabBarItem = contactTabBarItem;
[contactTabBarItem release];
/*
add to an array
*/
allFeaturesAvailableTabBarItemArray = [[NSArray alloc] initWithObjects:
issuesNavigationController,
thumbsViewController,
contentsViewController,
searchViewController,
favouritesViewController,
contactViewController, nil];
/*
release objects
*/
[thumbsViewController release];
[contentsViewController release];
[searchViewController release];
[favouritesViewController release];
[contactViewController release];
}
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您可能过度发布了标签栏图像(FWIW)。
I think you may be over releasing the tab bar images (FWIW).
我最终将数组中的对象一一删除,以查看哪一个导致了问题。添加的第一个对象是 0x0 (nil),因此它没有向数组添加任何内容。奇怪的是,
我正在调用
一个 nil 对象的属性并且没有发出警报。这是“预期的”还是我应该报告的错误?
非常感谢大家的快速答复。
我也会处理过度释放的问题,谢谢!
I ended up removing one by one the objects in the array to see which one was causing issues. the first object added was 0x0 (nil) so it didn't add anything to the array. The strange thing is that
on
I'm calling properties on an nil object and fired no alarms. Is this "expected" or is it kind of a bug I should report?
Thank you very much to all of you for your quick answers.
I'm going to take care of the overrelease as well Thanks!