【问题标题】:UIImage not being loaded but file is thereUIImage 未加载但文件存在
【发布时间】:2010-12-21 07:46:18
【问题描述】:

我似乎无法加载图像,但我确定它位于我指定的路径中。

这是尝试加载图像的代码:

- (UIImage*) CPPlistImageToUIImage: (NSString *) CPPlistImage {
    /*TODO: 这是内存泄漏吗?找出*/
    UIImage * ret = [UIImage imageNamed: CPPlistImage];
    如果(ret == nil){
        RDLogString(@"警告:图片加载失败:\"%@\"", CPPlistImage);
    }

    返回 ret;
}

这是一个函数,它列出了该函数所在目录中的所有文件:

-(无效)lsOwnDirectory { NSError * 错误 = [[NSError alloc] init]; NSArray * files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: pathToOwnDirectory error: &error]; for(NSString * 文件中的文件){ RDLogString(@"%@", 文件); } }

这是两个函数在同一运行中的输出示例:

// CPPlist...图像告诉他找不到/加载图像 2009-11-29 02:12:51.510 CPPlayer[6452:207] CPConversation.m:113 警告:无法加载图像:“/Users/nick/Library/Application Support/iPhone Simulator/User/Applications/D3403591-3A56- 4F05-B4C1-C21DAAF918A2/CPPlayer.app/CP.Resources/CP.Conversations/Supermarkt/OIGNONS.png" ... // lsOwnDirectory 在 CPPList...Image 之后调用 2009-11-29 02:12:51.557 CPPlayer[6452:207] RootViewController.m:81 /Users/nick/Library/Application Support/iPhone Simulator/User/Applications/D3403591-3A56-4F05-B4C1-C21DAAF918A2/的内容CPPlayer.app/CP.Resources/CP.Conversations/Supermarkt 2009-11-29 02:12:51.566 CPPlayer[6452:207] CPConversation.m:133 音频 2009-11-29 02:12:51.567 CPPlayer[6452:207] CPConversation.m:133 CPConversation.plist 2009-11-29 02:12:51.568 CPPlayer[6452:207] CPConversation.m:133 CPData.sqlite 2009-11-29 02:12:51.569 CPPlayer[6452:207] CPConversation.m:133 张图片 2009-11-29 02:12:51.570 CPPlayer[6452:207] CPConversation.m:133 OIGNONS.png

我不知道为什么它找不到文件。一个函数看到了,另一个没有,他们似乎在同一个目录中查找...

任何帮助,非常感谢,

提前致谢, 尼克

编辑: 我忘了补充代码是由 xcode 为 iPhone OS 3.0 执行和编译的。您可能从标签中得到了它,但仍然如此。

【问题讨论】:

    标签: iphone objective-c resources uiimage


    【解决方案1】:

    -[UIImage imageNamed:] 不接受图像文件的完整路径 - 它只接受文件名,然后在应用程序的主包中查找具有该文件名的图像。这就是它返回 nil 的原因。另一方面,-[UIImage imageWithContentsOfFile:] 需要文件的完整或部分路径。两个构造函数之间的主要区别在于 imageNamed: 在内部缓存图像(在特定于 UIImage 的私有缓存中),而 imageWithContentsOfFile: 不会缓存图像。

    旁注:不,这不是内存泄漏。您正在使用便利的构造函数,根据 Cocoa 的内存管理规则,它应该返回一个自动释放的对象,除非您在其他地方明确保留它,否则您不会拥有该对象。

    【讨论】:

    • 值得一提的是,这只是帮助我找到了我遇到的问题。我只加载了带有文件名的图像,但某些图像没有显示并且它们的内存地址设置为 0。但是捆绑的东西让我想到了所以我在我的资产文件夹中选择了图像并打开了文件检查器面板。果然,xcode 决定不检查我的几张图片的目标成员资格。
    • 谢谢赫克曼,果然,我也遇到了同样的问题,这对我也有用。
    猜你喜欢
    • 2021-05-18
    • 1970-01-01
    • 2011-05-22
    • 2016-01-16
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    相关资源
    最近更新 更多