Iphone iAction在iOS5中执行错误访问

Iphone iAction在iOS5中执行错误访问,iphone,ios5,xcode4.2,Iphone,Ios5,Xcode4.2,我已经为iOS5的xcode 4.2中的按钮点击操作编写了一个示例代码 这是密码 h 但是当我点击按钮时。我有个例外。如何解决这个问题?这在iOS 4.3中同样适用。首先将此代码更改为此代码 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. [_button addTarget:self action:@selecto

我已经为iOS5的xcode 4.2中的按钮点击操作编写了一个示例代码

这是密码

h


但是当我点击按钮时。我有个例外。如何解决这个问题?这在iOS 4.3中同样适用。首先将此代码更改为此代码

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view from its nib.
    [_button addTarget:self action:@selector(changed) forControlEvents:UIControlEventTouchUpInside];
}

您更改的
操作的消息签名错误。应该是:

- (IBAction)changed:(id)sender
在addTarget代码行中:

@selector(changed:)
PS:您为什么要使用
\按钮
?我认为这与问题无关,但您应该使用
self.button
。应该避免直接访问实例变量,尤其是在这种情况下,您允许编译器决定变量的名称


PPS:正如@inderkumarratore所提到的,在运行自己的代码之前,您还应该调用
[super viewDidLoad]

我想他也需要为该按钮添加数据成员。我的意思是代码应该是这样的

@interface FirstViewController : UIViewController{
  IBOutlet *UIButton *button;
}

@property(strong,nonatomic) IBOutlet UIButton *button;
-(IBAction)changed;
 @end
试着换一个

@synthesize button = _button;


在您的.m文件中。

我找到了解决问题的方法


主要问题是,如果我在本地(即,在任何方法内部)创建一个视图控制器对象,并将其添加为子视图,那么当您调用任何
iAction
时,它将引发异常,因为,当在本地声明时,viewController的内存将自动释放。

显示崩溃日志和应用程序崩溃的语句..将对超级的调用移动到
viewDidLoad
method的顶部如果我单击该按钮,它将在main.mca中显示EXEC\u BAD\u访问权限。您可以发布更改方法的代码吗?我已经发布了。请向下滚动hmmm。。我做了你说的所有改变。同样的问题。我将我的方法名称更改为-(iAction)更改:(id)发送者和目标更改为@selector(更改:),_按钮更改为self.button。即使在那时。没有变化,我不确定。我怀疑实际的bug在代码中的其他地方。EXEC\u BAD\u访问通常是一个内存管理错误,您是否启用了ARC?在编写代码之前,我已经使用了[super viewDidLoad]。消息签名的情况与此不同-在不使用sender参数的情况下创建和调用选择器完全可以。@AbhiBeckert。。是的,我启用了ARC@iNoob我还设置了断点。但我在main.m中遇到异常。我的视图正在成功加载,但我无法编写操作。如果我在代码中使用[UIButton alloc]initWithFrame..]创建按钮,则上述代码正常工作。但是,如果我使用ibuibutton&从xib文件连接,那么同样是不起作用的。我已经在我的项目中运行了您的代码,并且它工作得很好。。。一定是别的问题。。。使用断点来检查这一点problem@Bharath我希望您正在清除以编程方式创建按钮的代码,因为错误的访问通常是由于过度释放对象造成的。正如Inder提到的,这很好用,我也在我的机器上试过。@Bharath你每次都不能访问?@iNoob。。我的问题解决了。它的jus becoz在viewDidLoad方法中的AppDelegate.m中我创建了FirstViewController obj并添加到窗口FirstViewController*viewController=[[FirstViewController alloc]initWithNibName:@“FirstViewController”bundle:[NSBundle mainBundle]];“[self.window addSubView:viewController.view]”这实际上帮助我跟踪了我的问题,即我的视图控制器被垃圾收集,我必须使其成为一个强变量。
@interface FirstViewController : UIViewController{
  IBOutlet *UIButton *button;
}

@property(strong,nonatomic) IBOutlet UIButton *button;
-(IBAction)changed;
 @end
@synthesize button = _button;
@synthesize button;