我最近开始基本通过Lynda.com iOs SDK essentials课程学习Obj-C和Iphone开发。但它是为Xcode 3.x编写的,我安装了4.0.x,所以情况有所不同。 基本上,我从那里采取示例,它只是对我不起作用,我无法弄明白它是一个菜鸟。
//basicViewController.h
#import <UIKit/UIKit.h>
@interface basicViewController : UIViewController {
IBOutlet UITextField *txtName;
IBOutlet UILabel *lblMessage;
}
@property (nonatomic, retain) IBOutlet UITextField *txtName;
@property (nonatomic, retain) IBOutlet UILabel *lblMessage;
- (IBAction) doSomething;
@end
我的basicViewController.m
#import "basicViewController.h"
@implementation basicViewController
@synthesize txtName;
@synthesize lblMessage;
- (IBAction) doSomething
{
NSString *msg = [[NSString alloc] initWithFormat:@"Hello, %@",txtName.text];
[lblMessage setText:msg];
[msg release];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end
我没有改变basicAppDelegate.h和.m的创建方式。我想无论如何我都会发布它们。
//
// basicAppDelegate.h
#import <UIKit/UIKit.h>
@class basicViewController;
@interface basicAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
basicViewController *viewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet basicViewController *viewController;
@end
//
// basicAppDelegate.m
#import "basicAppDelegate.h"
#import "basicViewController.h"
@implementation basicAppDelegate
@synthesize window;
@synthesize viewController;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}
- (void)dealloc {
[viewController release];
[window release];
[super dealloc];
}
@end
这是我的main.m:
//
// main.m
#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
此外,在Interface Builder窗口中,我通过File的Owner:label链接到lblMessage,TextField链接到txtName,doSomething链接到Button。
现在,问题是:实际上,只有当我使用弹出键盘而不是我的物理键盘时,事情才有用。并且只有当我键入少于3-4-5个符号时(有时不同)。 如果我使用我的键盘,而不是弹出键盘 - 它给我线程1接收信号EXC_BAD_ACCESS。 如果我键入太多符号,则相同。
我在All Output中看不到多少 - 只是一些常见的东西,唯一可疑的行是:
warning:unable to compile regular expression "dyld"
Current language: auto; currently objective-c
(gdb)
所以,伙计们,感谢任何帮助。
答案 0 :(得分:1)
首先,除了界面之外,没有改变Xcode 3以外的东西。
尝试设置断点并查看应用崩溃的位置......
尝试删除IBOutlets并创建新的...
尝试创建新应用...
如果一切都行不通,请将Mac扔到窗外,将其带回Apple。 (或再次安装Xcode - >便宜得多..)
答案 1 :(得分:0)
我遇到了完全相同的问题,花了AGES寻找解决方案。我发现了如何使它工作,我已经制作了一个关于如何在XCode上创建Hello,Name应用程序的教程。看看它是否有帮助。我想如果你逐步按照步骤操作,你应该立即运行你的应用程序。
http://techtalktone.wordpress.com/2011/11/26/hello-world/
希望这会有所帮助;)