ARC 和 Popovers 和代表

Posted

技术标签:

【中文标题】ARC 和 Popovers 和代表【英文标题】:ARC and Popovers and delegates 【发布时间】:2012-03-07 12:14:14 【问题描述】:

我正在撕扯我的头发,我已将我的旧项目迁移到 arc 并且我收到此错误:* 由于未捕获的异常“NSGenericException”而终止应用程序,原因:'- [UIPopoverController dealloc] 在 popover 仍然可见时到达。'

我已经阅读了一些线程并且我很困惑,有人说在使用委托时使用弱引用,但另一方面在使用弹出框时使用强属性引用,有人可以给我一个如何最好地使用 ARC 的示例并使用一个弹出框代表,其中有一个按钮,例如可以更改背景颜色?

根据我的阅读,我不断听到在我的视图控制器中使用实例变量,它在我的主视图控制器中:

@property (nonatomic, strong) UIPopoverController *currentPopover;

是主视图控制器文件中的方法实现:

- (IBAction)ShowPopTextColor:(id)sender 

if (currentPopover == nil) 

TimerTextColor *timerTextColor = [[TimerTextColor alloc]init];
timerTextColor.delegate =self;
UIPopoverController *pop = [[UIPopoverController                  alloc]initWithContentViewController:timerTextColor];
[pop setDelegate:self];
    [pop setPopoverContentSize:CGSizeMake(320, 240)];
[pop presentPopoverFromBarButtonItem:sender       permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

//[pop release];

 else 

   [currentPopover dismissPopoverAnimated:YES];
    currentPopover = nil;



这是我的弹出内容标题:

@protocol colorChooserDelegate

-(void) colorSelected:(UIColor*)thecolor;

@end

@interface TimerTextColor : UIViewController

id<colorChooserDelegate> delegate;

IBOutlet UIButton *colorView;



- (IBAction)buttonTapped:(id) sender;
@property (nonatomic,strong) id<colorChooserDelegate>delegate;
@property (nonatomic,strong) UIButton *colorView;

@end

我做错了什么?

【问题讨论】:

【参考方案1】:

分配 currentPopover。 打电话

currentPopover = pop

创建弹出框后

【讨论】:

谢谢!我的重点是弧线,我是盲目的!这段代码在 arc 之前工作,所以我什至没有考虑将我的本地分配回我的实例变量!再次感谢您指出这一点。【参考方案2】:

您不应该创建一个局部变量来存储弹出框控制器。

改一下

UIPopoverController *pop = [[UIPopoverController alloc] initWithContentViewController:timerTextColor];

self.currentPopover = [[UIPopoverController alloc] initWithContentViewController:timerTextColor];

【讨论】:

以上是关于ARC 和 Popovers 和代表的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 3.2 中为 Twitter Bootstrap 的“bootstrap-popover.js”设计“popovers”样式

如何使用 Xcode Storyboards 创建 Popovers

如何在 reactstrap 的 Popovers 中正确使用延迟?

html SiteWrench Popovers

在哪种情况下应该在情节提要中使用 Popover segue?

如何在 React 应用程序中初始化 Bootstrap 4 弹出框?