我一直在努力通过一些Objective-C/iOS开发书籍,并且我碰到了一个绊脚石。我觉得我在这里错过了一些愚蠢的东西,所以我相信你们可以提供帮助,因为你们都非常聪明:-)。我在哪里实例化我的课程,以便在我的应用程序中访问它?
我有一个非常简单的应用程序,它由1个按钮和1个标签组成。按下按钮会在标签中显示一条消息。我创建了一个包含创建所述消息的方法的类。这是问题:
#import "classTestViewController.h"
@implementation classTestViewController
@synthesize myLabel;
- (void)viewDidLoad
{
}
-(IBAction) pressGo:(id)sender{
MyClass * classTester = [[MyClass alloc] init];
classTester.count = 15;
NSString *newText = [classTester makeString ];
myLabel.text = newText;
}
- (void)dealloc
{
[classTester release];
[myLabel release];
[super dealloc];
}
这个应用程序的输出,在我的标签,是“Yay 15”。所以你可以看到这个问题,唯一可以实现这个功能的方法是在“pressGo”方法中实例化这个类。这是不可取的,因为另一种方法无法访问或更改类变量计数。另外我得到一个警告,即classTester的本地声明隐藏了实例变量。如果我将类实例化移动到viewDidLoad方法(看起来正确),其他方法不能再访问它。
#进口 “classTestViewController.h”
@implementation classTestViewController
@synthesize myLabel;
- (void)viewDidLoad
{
MyClass * classTester = [[MyClass alloc] init];
}
-(IBAction) pressGo:(id)sender{
classTester.count = 15;
NSString *newText = [classTester makeString ];
myLabel.text = newText;
}
- (void)dealloc
{
[classTester release];
[myLabel release];
[super dealloc];
}
的输出是错了。如果我尝试访问一个变量,例如classTester.count,即使设置了它,我也会得到一个0值。我也在这里得到覆盖警告。
所以我的问题是,我怎样才能访问整个我的应用程序的类实例,而不只是在一种方法?我正在使用基于视图的应用程序。
如果你正在寻找一个** singleton **,你需要Gallagher的文件,每个人都用单身。 http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html。在这里获取实际的文件http://projectswithlove.com/projects/SynthesizeSingleton.h.zip。如果你是一个新的程序员,不要过度使用单身人士,你需要知道你在做什么。阅读更多关于他们。 – Fattie 2011-03-20 09:16:57