2012-02-15 55 views
0

我想从之前的视图控制器创建一个类。它只包含一些数据库设置调用。在我的研究中,我发现我收到了“没有已知类的方法...”错误,因为我没有正确定义类方法。继承人什么我:类方法中的实例变量(难以处理)

View1.m 
... 
[view2 databseBuild]; 
... 

classA.h 
-(void)databaseBuild; 

classA.m 
-(void)databaseBuild 
     { 
     ... 
     } 

这是我改变了我的类:

classA.h 
    +(void)databaseBuild; 

    classA.m 

    +(void)databaseBuild 
     { 
     ... 
     } 

不过,我现在正在接受是错误的一大堆。所有这些基本上都是围绕实例变量不是“变量”类方法来访问。是否有一个‘最佳实践’为创建类,以避免这种类型的错误?

+0

你是怎么调用这些方法的? – joerick 2012-02-15 08:09:41

+0

您根本无法访问类方法中的实例变量 - 您没有可​​用的实例。你能详细说明你在做什么吗?也许包括这些方法的内容? – 2012-02-15 08:12:43

回答

0

的Objective-C的方法

- (void)method {} 

会创建可使用的实例方法如下:

MyClass *instance = [MyClass alloc] init]; 
[instance method] 

虽然另一方面

+ (void)method {} 

将创建一个类的方法,可以这样调用:

[MyClass method] 

您收到由于这一事实的错误,有没有这样的事情在Objective-C类变量(但你可以创建静态变量全球范围作为解决方法)

+0

通常使用Class方法作为Factory方法返回自动发布的实例对象。 – richerd 2012-02-15 08:17:54

0

+(void)databaseBuild;是一种类方法。你用[MyClass databaseBuild];来称呼它。类方法是独立于对象工作的方法。例如[NSArray arrayWithObject:]是一种类方法。

-(void)databaseBuild;是一种实例方法。你用[myClassInstance databaseBuild];来调用它,它主要用于与对象实例进行交互。 (例如[myArray objectAtIndex:]

你说你使用的是[view2 databseBuild];这是对实例方法的调用。

很可能它已经足够#import头文件到您尝试使用[view1 databaseBuild]的文件中。

您的一堆错误可能会告诉您,您无法从类方法访问实例变量或@properties。