gpt4 book ai didi

c# - 当我点击我的 UIButton 时 iOS 应用程序崩溃

转载 作者:太空狗 更新时间:2023-10-30 03:50:29 24 4
gpt4 key购买 nike

总结

这是我尝试使用 Xamarin 制作的第一个应用。我正在学习 Hello World, iPhone 示例。当我点击我的按钮时,应用程序崩溃了,我不知道为什么。

详情

我有一个简单的 UIViewController 和一个 UIButton。我创建了一个导出,所以当我点击按钮时,我会做一些事情。

当我连接按钮的 TouchUpInside 事件 时,应用程序会在我单击按钮时崩溃。当我删除有线事件(但 socket 仍然存在)时,单击按钮时应用程序不会崩溃。 (当然,什么也没有发生,因为什么都没有连接)。

让我感到沮丧的是,我不知道哪里出了问题,使用调试信息,我无法弄清楚!我多年来一直在编写 C# 代码,但刚开始使用 Xam 有点不同,尤其是当崩溃报告缺少任何信息时。我猜我可能勾选了一些设置(例如,没有调试信息?)

所以这里有一些代码...

AuthenticationViewController
.h 文件

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>


@interface AuthenticationViewController : UIViewController {
UIButton *_Google;
}

@property (nonatomic, retain) IBOutlet UIButton *Google;

@end

.m 文件

#import "AuthenticationViewController.h"

@implementation AuthenticationViewController

@synthesize Google = _Google;

@end

设计器文件

using MonoTouch.Foundation;
using System.CodeDom.Compiler;

namespace Foo.Client.iPhone
{

[Register ("AuthenticationViewController")]
partial class AuthenticationViewController
{
[Outlet]
MonoTouch.UIKit.UIButton Google { get; set; }

void ReleaseDesignerOutlets ()
{
if (Google != null) {
Google.Dispose ();
Google = null;
}
}
}
}

最后,我的

.cs 文件

using System;
using System.Drawing;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace Foo.Client.iPhone
{
public partial class AuthenticationViewController : UIViewController
{
public int xxx = 0;
public event EventHandler OnAuthenticationCompleted;

public AuthenticationViewController()
: base ("AuthenticationViewController", null)
{
}

public override void DidReceiveMemoryWarning()
{
// Releases the view if it doesn't have a superview.
base.DidReceiveMemoryWarning();

// Release any cached data, images, etc that aren't in use.
}

public override void ViewDidLoad()
{
base.ViewDidLoad();

Google.TouchUpInside += (sender, e) =>
{
xxx++;
};
}
}
}

这是(缺少)崩溃转储/堆栈跟踪

2013-10-25 21:37:13.785 FooClientiPhone[8852:1403] MonoTouch: Socket error while connecting to MonoDevelop on 127.0.0.1:10000: Connection refused
mono-rt: Stacktrace:

mono-rt: at <unknown> <0xffffffff>

mono-rt: at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <IL 0x0009f, 0xffffffff>

mono-rt: at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38

mono-rt: at Foo.Client.iPhone.Application.Main (string[]) [0x00008] in /Users/PureKrome/Documents/Mac Projects/Foo iOS Client/Code/Foo.Client.iPhone/Main.cs:16

mono-rt: at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff>

mono-rt:
Native stacktrace:

mono-rt:
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================

我卡住了,不知道如何继续?

此外,here's a video showing the error (请选择720p版本)。

这是 solution, zipped up .

最佳答案

从 xCode 的角度来看,我认为 IBOutlet 导致您的应用程序崩溃。仅仅是因为 IBOutlets 用于状态而不是调用方法。在这种情况下,您应该将按钮连接到 IBAction:

- (IBAction)Google:(id)sender; 

最终会调用:

Google.TouchUpInside += (sender, e) => 
{
xxx++;
};

另外,请注意,在现代 objective-c 中,您不需要 @synthesize Google = _Google;,它会自动发生。

快乐的 x(amarin) 编码。

关于c# - 当我点击我的 UIButton 时 iOS 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19626294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com