English 中文(简体)
与国际会计师联合会的日程安排问题
原标题:Strange issue with UIDocumentInteractionController

我不知道这部法典有什么错误,但每次在门乌显示坠毁后,我跑了。

NSString * path = [[NSBundle mainBundle] pathForResource:@"tung" ofType:@"doc"];

UIDocumentInteractionController *docController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:path]];

docController.delegate = self;

//[docController presentPreviewAnimated:YES];

CGRect rect = CGRectMake(0, 0, 300, 300);
[docController presentOptionsMenuFromRect:rect inView:self.view animated:YES];

I got:

*** Terminating app due to uncaught exception NSGenericException , reason: -[UIPopoverController dealloc] reached while popover is still visible.

我现在应该做些什么?

最佳回答

通过“流离”概念文件审查文件 主计长 主计长 WithURL and autorelease it in the UIDocumentInteractionControllerDelegate methods document InteractionController DidDismissOptionsMenu。 正如戴维·刘所言,释放这架飞机将坠毁。 但汽车工程。 我已经核实,实际上有人叫卖。

The following code should work:


- (void)previewDocumentWithURL:(NSURL*)url
{
    UIDocumentInteractionController* preview = [UIDocumentInteractionController interactionControllerWithURL:url];
    preview.delegate = self;
    [preview presentPreviewAnimated:YES];
    [preview retain];
}
- (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller
{
    [controller autorelease];
}
问题回答

它基本上是旧的记忆管理问题。

[UIDocument InteractionController internationler WithURL:[NSURL fileURLWithPath:path] 返回自动释放的物体,因此,在您的代码编组完成后,其舱面随即自动释放。 我猜测这一说法不同于<条码>,ModalViewController,后者将保留一份副本给你,但这个要点是一旁。

Basically, you need to retain it before your code block ends. The more annoying part is keeping track of what the docController is doing so you don t leak memory. You ll have to check the result from
[docController presentOptionsMenuFromRect:rect inView:self.view animated:YES];

如果它遣返NO,这意味着菜单从没有显示,因此,你应该放弃(如果你已经保留的话)。

However, if it returns YES, then you ll need to implement the delegate methods for docController, and release it when the menu is dismissed (in this case, it would be when:
- (void)documentInteractionControllerDidDismissOptionsMenu:(UIDocumentInteractionController *)controller
gets called.

EDIT: I want to make a correction here:

如果烟菜被弃,先前的回答将失败。 从根本上说,实际上没有任何好办法可以制造离去的DocController。 相反,我认为,最好只为你们在观察者中所需要的每份档案制作一个文件,并在你完全做时处理。 否则,你将陷入众多可能的情况,即主计长将过早地释放和坠毁。

这一错误(正如其他发言者提到的那样)是由发布的,而提交的意见控制员仍然取决于该编码。 这是一种简单的错误,在计算结果的环境下大力提及这种观点的控制者,将解决这一问题。 如果出于对代表方法的响应而不再需要该物体,该物体可以释放。

令人困惑的理由是,在科恰,类似外表的其他工具不必以同样的方式保留。 例如,可在一种无问题的方法内建立和表述“UIImagePickerController或

这些其他例子和<编码>停止行动文件<>编码>之间的区别在于,其他组成部分均为<条码>查询密码<>。 当它们被推向导航站或由导航站或显示望控制器保留。 当他们被解职时,就删除了这一提法,并释放了他们。 。 相反,它提供了能够显示相关接口的观察控制器,但重要的是,(因为这样做会造成保留周期)并不保留文件互动控制器。 因此,无论谁在创建文件控制员,只要所介绍的接口有此需要,他们也必须保持强有力的参考。


这个例子基本上与接受的答复相同,但使用ARC的友好方式保留物体。

@interface MYViewController : UIViewController <UIDocumentInteractionControllerDelegate>

@property (nonatomic, strong) UIDocumentInteractionController *documentInteractionController;

@end

@implementation MYViewController

- (void)presentDocumentWithURL:(NSURL*)url {
    self.documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:url];
    self.documentInteractionController.delegate = self;
    [self.documentInteractionController presentPreviewAnimated:YES];
}

- (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller {
    self.documentInteractionController = nil;
}

@end

SWIFT 3

主计长变量:

var documentIteratorController : UIDocumentInteractionController?

电话方法:

documentIteratorController = UIDocumentInteractionController(url: reportURL)
documentIteratorController?.delegate = self
documentIteratorController?.presentOptionsMenu(from: self.printButton.frame, in: self.view, animated: true)

基督教技巧......

如果你决定从不同纽州而不是从航道上发射不同的PDF,则不使用:

[控制器自动释放];

由于它将撤除控制员,因此在第一次使用后,还有更多的人获得了工作。

但是,如果你使用的话,你可能要说的话。

[自此]

我通过创造财产,然后使用这一法典来解决这一问题。

    [_DocController dismissMenuAnimated:NO];
    _DocController = [UIDocumentInteractionController interactionControllerWithURL:url];
    //docController.delegate = self;

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    {
        [_DocController presentOptionsMenuFromRect:((UIView*)control).bounds inView:control animated:YES];
    }
    else
    {
        [_DocController presentOptionsMenuFromBarButtonItem:control animated:YES];
    }

驳回MenuAnimated对于防止UIPopover Dealloc错误非常重要。 最常见的错误是,波什威人仍在展示,你再次敦促纽伦显示人口。





相关问题
Code sign Error

I have created a new iPhone application.I have two mach machines. I have created the certificate for running application in iPhone in one mac. Can I use the other mac for running the application in ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

将音频Clips从Peter改为服务器

我不禁要问,那里是否有任何实例表明从Peit向服务器发送音响。 I m不关心电话或SIP风格的解决办法,只是一个简单的袖珍流程......

• 如何将搜查线重新定位?

我正试图把图像放在搜索条左边。 但是,问题始于这里,搜索条线不能重新布署。