Jou*_*man -2 exception objective-c try-catch uiimage ios
我有一些图像缩放代码的问题,在iOS5中引发异常但在6和7中工作.
我需要支持运行5的用户,所以我试图编写一个try-catch,它会在异常发生时调用一些特殊的iOS5代码.
异常(EXC_BAD_ACCESS)似乎发生在Apple代码中,我的代码中的异常处理程序不处理错误,但应用程序只是立即崩溃.
那么,任何人都可以建议一种更强大的方法来尝试捕捉异常,或者任何人都可以对更好的缩放图像方式有所了解吗?(记住这是针对iOS5的)
我的主要图像缩放功能(包含不起作用的异常捕获器):
+ (UIImage *)imageWithImage:(UIImage *)image scaledToMax:(int)maxDimension {
// Get a copy of the image where the new image has a maximum height or width as specified by maxDimension
float scaleFactor;
if (image.size.width<=maxDimension && image.size.height<=maxDimension)
{
return image;
}
if (image.size.width>image.size.height)
{
scaleFactor = maxDimension / image.size.width;
} else {
scaleFactor = maxDimension / image.size.height;
}
float newWidth = roundf(image.size.width * scaleFactor);
float newHeight = roundf(image.size.height * scaleFactor);
CGSize newSize = CGSizeMake(newWidth, newHeight);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
NSLog(@"HPSImageHelper imageWithImage point a %f %f", newSize.width, newSize.height);
UIImage *newImage;
@try {
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
NSLog(@"HPSImageHelper imageWithImage point b");
newImage = UIGraphicsGetImageFromCurrentImageContext();
NSLog(@"HPSImageHelper imageWithImage point c");
UIGraphicsEndImageContext();
}
@catch (NSException * e) {
NSLog(@"HPSImageHelper imageWithImage point d");
newImage = [image scaleToSize:newSize];
NSLog(@"HPSImageHelper imageWithImage point e");
}
NSLog(@"HPSImageHelper imageWithImage point f");
return newImage;
}
Run Code Online (Sandbox Code Playgroud)

这不是Java,请阅读iPhone/Objective-C的Try-catch异常处理实践
并且无论如何都不要捕获NSException(PokemonExceptionHandling).如果你真的必须捕获异常,你想捕获一个特定的异常.
回到你的具体问题,EXC_BAD_ACCESS意味着你以错误的方式访问内存,程序崩溃了.没有例外.
您必须查找您尝试访问的悬空指针或未初始化的变量.
如果您只想对不同的系统版本执行不同的操作,只需检查版本并拆分控制流,例如:
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_5_1) {
// Do specific operations for iOS 5.1 or earlier
} else {
// Do specific operations for iOS 6 or later
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |