小编Ada*_*abo的帖子

在iPad上的iOS SDK 8.4中的ARC下过度发布了MPMoviePlayerController

从较大的一部分创建了一个非常简单(单一视图)的示例项目.它适用于iOS SDK 8.3.

当您点击"显示我"按钮时,视频会出现(作为模态),2秒后,它会消失.看起来不错.但不久之后,应用程序崩溃了,因为-dealloc消息被发送到已经解除分配的对象.

[MPAVController release]:发送给deallocated实例的消息

这是我的示例项目(不要忘记Video.mp4):

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController


@end
Run Code Online (Sandbox Code Playgroud)

ViewController.m

#import "ViewController.h"

#import "MediaViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setTitle:@"Show me!" forState:UIControlStateNormal];
    button.frame = CGRectMake(10.0, 10.0, 100.0, 30.0);
    [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

- (void)buttonTapped:(id)sender
{
    MediaViewController *mediaVC = [[MediaViewController alloc] initWithNibName:nil bundle:nil];
    [self presentViewController:mediaVC animated:YES completion:^{
        [self performSelector:@selector(dismissPresentedController) withObject:nil afterDelay:2.0];
    }];
}

- (void)dismissPresentedController
{
    [self.presentedViewController dismissViewControllerAnimated:YES completion:nil]; …
Run Code Online (Sandbox Code Playgroud)

sdk mpmovieplayercontroller ipad ios automatic-ref-counting

14
推荐指数
1
解决办法
1204
查看次数

在控制台中获取消息:对于支持数据提供者的CGImageRef,"CreateWrappedSurface()失败."

更新到Xcode 7并在操作中呈现图像时获取此(警告?)消息:

对于支持数据提供者的CGImageRef,CreateWrappedSurface()失败.

在Xcode 6.4下没有这样的消息.

得到了哪个代码部分抛出了消息:

if (!self.originalImage) // @property (nonatomic, strong) UIImage *originalImage;
        return;

CGImageRef originalCGImage = self.originalImage.CGImage;
NSAssert(originalCGImage, @"Cannot get CGImage from original image");
CIImage *inputCoreImage = [CIImage imageWithCGImage:originalCGImage]; // this results the console message
Run Code Online (Sandbox Code Playgroud)

我替换了我的CIIImage创建者直接从UIImage获取它:

CIImage *originalCIImage = self.originalImage.CIImage;
NSAssert(originalCIImage, @"Cannot build CIImage from original image");
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我没有得到任何控制台消息,但有一个断言:originalCIImage是零.

UIImage的类引用说:

@property(nonatomic,readonly)CIImage*CIImage

如果使用CGImageRef初始化UIImage对象,则属性的值为nil.

所以我使用原始代码作为后备:

CIImage *originalCIImage = self.originalImage.CIImage;
if (!originalCIImage) {
    CGImageRef originalCGImageRef = self.originalImage.CGImage;
    NSAssert(originalCGImageRef, @"Unable to get CGimageRef of originalImage");
    originalCIImage = [CIImage imageWithCGImage:originalCGImageRef];
}
NSAssert(originalCIImage, @"Cannot …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c uiimage cgimageref ciimage

7
推荐指数
1
解决办法
2953
查看次数

iOS 7 上 -[UITableView layoutSublayersOfLayer:] 中的断言失败

这是问题所在:UITableViewController(带有 UITableView),当没有行时,我想在上面显示“无内容”标签。

适用于 iOS 8.x在 iOS 7.1 上崩溃(断言失败)。

-[UITableView layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2935.137/UIView.m:8794 中的断言失败

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“执行 -layoutSubviews 后仍需要自动布局。UITableView 的 -layoutSubviews 实现需要调用 super。

全栈:

*** Assertion failure in -[UITableView layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2935.137/UIView.m:8794
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. UITableView's implementation of -layoutSubviews needs to call super.'
*** First throw call stack:
(
    0   CoreFoundation                      0x007fb1e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x0057a8e5 objc_exception_throw + 44
    2   CoreFoundation                      0x007fb048 +[NSException raise:format:arguments:] + …
Run Code Online (Sandbox Code Playgroud)

xcode assert objective-c uitableview ios

1
推荐指数
1
解决办法
2264
查看次数