嘿,我自动将项目转换为ARC,我唯一要修复的是Xcode将数组的大小从[8]更改为[4](仍然不知道发生了什么)

但是,我现在意识到我遇到了另一个问题:每次我在弹出窗口中按一个按钮时,如果将应用程序链接到IBAction,则该应用程序将崩溃。 如果我删除对头文件和主文件的引用,则该按钮是可单击的,但是一旦我将其分配给某个方法(即使该方法为空),整个应用程序就会冻结/崩溃。

这是我启动弹出窗口的方式:

PopUpViewController *popViewController =
[[PopUpViewController alloc]  initWithNibName:@"PopUpViewController" bundle:nil];

[popViewController setTitle:@"This is a popup view"];
[popViewController showInView:self.view
                                 animated:YES];
popViewController.view.center=self.view.center;

很基本的东西,我从网上找到的教程中删除了。 我的标题是这样的:

@interface PopUpViewController : UIViewController

- (IBAction)baa:(id)sender;
@property (strong, nonatomic)  UIButton *ba; // I was trying to add those buttons as properties here
@property (strong, nonatomic) IBOutlet UIButton *kl; //but no luck whatsoever

@property (strong, nonatomic) IBOutlet UIView *popUpView;
@property (strong, nonatomic) IBOutlet UIView *ppp;

- (IBAction)openSomething:(id)sender;
- (IBAction)openYoutube:(id)sender;
- (IBAction)openFacebook:(id)sender;

- (void)showInView:(UIView *)aView animated:(BOOL)animated;

@end 

而我的主要

#import "PopUpViewController.h"

@interface PopUpViewController ()

@end 

@implementation PopUpViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {

} 
    return self;
}
- (void)showAnimate
{
  // not important for this question
}

- (void)removeAnimate
{
  // shortened
}

- (IBAction)baa:(id)sender{
//    NSLog(@"asd"); I commented it out, but even an empty method kills the app
// only if I leave a button unassigned to any method, the app "survives" a button click

}

- (IBAction)openSomething:(id)sender
{
   // [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.test.de"]];
}

- (IBAction)openYoutube:(id)sender
{
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.youtube.com/"]];
}

- (IBAction)openFacebook:(id)sender
{
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.facebook.com/"]];

}

- (void) doSomething{
 // also tried an empty method with a "new" name over here to eliminate any caching errors, no luck   
}

- (IBAction)closePopup:(id)sender {
    [self removeAnimate];
}

- (void)showInView:(UIView *)aView animated:(BOOL)animated
{
    [aView addSubview:self.view];
    if (animated) {
        [self showAnimate];
    }
}


- (void)viewDidLoad
{
    self.view.backgroundColor=[[UIColor blackColor] colorWithAlphaComponent:.0];
    self.popUpView.layer.cornerRadius = 5;
    self.popUpView.layer.shadowOpacity = 1.0;
    self.popUpView.layer.shadowOffset = CGSizeMake(0.2f, 0.2f);


    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}


@end

有什么想法可以做些什么吗? 我现在将所有内容都引用为其他所有内容,甚至我什至都不知道它的外观,但是我不知何故认为它与引用有关。

提前谢谢,亚历克斯

#1楼 票数:0

我能够自己弄清楚:

在主ViewController的标题中,添加了

@property (strong, nonatomic) PopUpViewController *popViewController;

这仍然引发了事故。 但后来我将弹出式窗口“ opening”块调整为

_popViewController =
            [[PopUpViewController alloc]  initWithNibName:@"PopUpViewController" bundle:nil];                 

            [_popViewController setTitle:@"This is a popup view"];
            [_popViewController showInView:self.view
                                 animated:YES];
            _popViewController.view.center=self.view.center;

(加上下划线),现在又可以正常工作了。

实际上,我很好奇为什么它以前可行,但是我将不做进一步调查。

  ask by user2875404 translate from so

未解决问题?本站智能推荐:

1回复

在iOS项目中转换为ARC后,GHUnit给出了allocate_pages()错误

我最近将iOS项目转换为ARC。 我的项目中有两个目标。 一个是应用程序本身,另一个是一组GHUnit测试。 我有大约200个测试,这些测试在创建和修改Core Data对象方面做了很多工作。 测试使用的核心数据存储区是一个内存存储区,测试完成后将被丢弃(即,它在任何地方都没有持久化)。
3回复

将非ARC转换为ARC

我正在研究非常老的基于非ARC的项目,并添加了一些基于ARC的新UIViewController (可以通过在构建阶段设置-fobjc-arc标志来实现)。 由于ARC和非ARC的混合使用,有时memory leak发生memory leak ,因为忘记了释放非ARC代码中的某个位置,而从此
1回复

将GameCenterManager转换为ARC

我正在使用Apple的GKTapper演示中的GameCenterManger。 我决定将项目转换为arc,但始终收到错误消息“ GameCenterManager.h:67:43:当前部署目标不支持自动__weak引用”。 任何帮助,将不胜感激,谢谢! https://developer
3回复

目标C:转换为ARC后的无限getter方法循环

我有以下方法: 我在非ARC中有这个,它工作正常:如果第2行中的self.someArray为nil ,则继续并实例化它。 但是,在我切换到ARC后,当它到达第2行时,它会返回到第1行,然后循环继续。 任何帮助将不胜感激。 谢谢。
2回复

将项目从ARC转换为MRC

我在ARC开始我的项目,但出于某些原因我想将其更改为MRC,有没有办法在不重新制作我的项目的情况下这样做?
1回复

禁止使用arc将ios的间接指针隐式转换为目标c的id指针

您好以下代码块给我错误 错误是说“不允许将间接指针隐式转换为目标c指针,将id隐式转换为arc 我的.h文件 在此行编译错误[self.queue addObject:观察者];
2回复

iOS5SDK之前的ARC转换

我已经开发了一个与 iOS 4 兼容的项目。 我的问题是现在我想要非 ARC 启用 ARC 的项目,该项目应该适用于最新的 iOS 6 版本。
1回复

转换为ARC后,我收到“发送到已释放实例的消息”

我正在创建这样的View实例... 该视图包含2个UITextField字段,供用户输入。 在运行转换为ARC工具之前,所有这些工作都很好。 转换后,尝试在两个字段中的任意一个中输入值时,视图崩溃。 -[RequestDialogViewController responsesTo