iPhone应用程序有多个Objective-C对象吗?

| 我敢肯定这听起来很奇怪,但是我还是要问。我已经为iPhone开发了多个可运行的应用程序,但是我必须将所有内容添加到原始视图控制器中。如果我不这样做,该应用程序将崩溃。这是我的示例: 在视图控制器中:
- (IBAction) someAction: (id) sender {
    NSLog(@\"lajkrbgl\");

}
这样很好。但是,如果我执行\“添加文件\”并选择\“ Objective-C类\”,然后输入相同的代码,则只要按一下按钮,应用程序就会崩溃。如何添加更多对象并使其具有与OS X相同的功能? 编辑:以下是我制作新对象的步骤。在制作OS X应用程序时,这些步骤对我有用。 我右键单击Xco​​de中的\“ Classes \”文件夹。 我选择了“添加>新文件”。 我选择了\“ Objective-C Class \”和\“ NSObject \”。 我做了一个动作,“”-(IBAction)someAction:(id)sender; \“ 在Interface Builder中,我将动作连接到UIButton,并使用了“ Touch Up Inside”。 我单击了“构建并运行”按钮。 之后,我单击了按钮,然后应用程序退出了(几乎就像我单击“主页”按钮一样)。我没有任何错误。然后,我认为那是因为我没有将代码放入该操作中,所以我接下来做了。
- (IBAction) someAction: (id) sender; {
    NSLog(@\"lajkrbl\");
}
即使在此之后,它也以完全相同的方式崩溃,并且没有错误消息。有人可以看到我做错了吗? EDIT2:我刚运行Xcode 4,当我单击按钮时,它告诉我该代码给我带来了问题(我将\“ ** \”放在具有绿线的行之前)。
int main(int argc, char *argv[]) {

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    **int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
} 这到底是怎么错的?那是我制作项目时由Xcode创建的!     
已邀请:
在iOS中确实不同。 《 View Controller编程指南》中的此注释:   每当将对象添加到nib文件的顶层时,都应始终将这些对象连接到nib文件中其他位置的插座。 [...]因为会保留顶层对象,然后将它们自动释放,所以如果您没有保留该对象,则可能有机会在使用它之前将其释放。 更确切地说,是《资源编程指南》中的表1-1:   在笔尖文件中创建的对象的保留计数为1,然后自动释放。 [...]如果为笔尖文件对象定义出口,则应始终定义用于访问该出口的setter方法(或声明的属性)。网点的setter方法应保留其值,而包含顶级对象的网点的setter方法必须保留其值以防止将其释放。 都表明您应该为实现按钮的action方法的对象添加一个ѭ3到视图控制器,并让视图控制器保留该对象(属性使此操作变得容易):
@interface ButtonCrashViewController : UIViewController {
    IBOutlet ButtonActioner * myButtonActioner;
}

@property (retain, nonatomic) IBOutlet ButtonActioner *myButtonActioner;

@end
在ButtonActioner.m中:
- (IBAction)someAction:(id)sender {
    NSLog(@\"This didn\'t crash!\");
}
然后,您可以像往常一样在Interface Builder中挂接视图控制器的插座和按钮的动作。     
如果要将IBAction连接到某个离散对象中的方法,则在调用该操作时该对象必须存在。确保包含IBAction代码的对象已被实例化,并被包含该按钮的任何实体(可能是视图控制器)保留。 这可能会导致该实体保留MyObject类型的实例变量,其中MyObject是包含IBAction代码的NSObject子类。 代码示例: MyObject.m包含:
- (IBAction) someAction: (id) sender {
    NSLog(@\"lajkrbgl\");
}
MyViewController.xib包含一个UIButton,其TouchUpInside链接到someAction。 MyViewController.h包含:
@interface MyViewController : UIViewController {
    MyObject *myObject_;
}
MyViewController.m包含(in8ѭ):
myObject_ = [[MyObject alloc] init];
您可以选择将myObject设置为属性,以使其更加漂亮,但这就是您的要求。     

要回复问题请先登录注册