NSArray -initWithObjects:不存储对象

发布于 2024-10-05 07:50:16 字数 3857 浏览 0 评论 0原文

我从那个构造函数那里得到了一个非常奇怪的输出。它实际上不存储任何对象。我调试了该方法,并且存储的对象已正确初始化。 我使用这个数组在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谢绝鈎搭 2024-10-12 07:50:16

我认为您可能过度发布了标签栏图像(FWIW)。

I think you may be over releasing the tab bar images (FWIW).

但可醉心 2024-10-12 07:50:16

我最终将数组中的对象一一删除,以查看哪一个导致了问题。添加的第一个对象是 0x0 (nil),因此它没有向数组添加任何内容。奇怪的是,

我正在调用

issuesNavigationController.tabBarItem =issuesTabBarItem;

一个 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

issuesNavigationController.tabBarItem =issuesTabBarItem;

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!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文