iOS UIAppearance错误

Gav*_*avy 6 xcode objective-c ios5 uiappearance

我正在构建一个文件管理应用程序,在调用a UIImagePickerController或a 时偶尔会出现以下错误MPMediaPickerController:

*** -[_UIImageViewPretiledImageCacheKey hash]: message sent to deallocated instance 0x140dc0
Run Code Online (Sandbox Code Playgroud)

我最近使用iOS 5的UIAppearance API为我的应用程序提供了一个自定义主题,当我开始收到此错误时就是这样.通过猜测和检查,我发现我的代码有问题的行导致了这个错误:

UIImage *backButtonImage = [[UIImage imageNamed:@"backButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 16, 12, 8)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
UIImage *barButtonImage = [[UIImage imageNamed:@"barButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(14, 12, 14, 12)];
[[UIBarButtonItem appearance] setBackgroundImage:barButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

我不知道这段代码是如何触发上述错误的.你能否向我解释一下这个错误的来源,并提供一个解决方案来解决它.

提前感谢您的帮助,Guvvy

Gav*_*avy 3

经过一些更彻底的测试,我得出的结论是,这个问题仅限于视网膜设备。问题出在 @2x 图像中。它们的分辨率为奇数(例如 59 像素 x 60 像素)。我所做的只是重新创建图像并将分辨率更改为 60 像素 x 60 像素,之后我再也没有遇到过这个问题。

我对这个解决方案感到有点惊讶,因为我发现错误消息和代码行之间没有任何关联,但最终,是图像导致了这个问题。