类方法中的实例变量(不可访问)

时间:2012-02-15 01:22:03

标签: objective-c

我正在尝试从之前的视图控制器创建一个类。它只包含一些数据库设置调用。在我的研究中,我发现我收到了“没有已知的方法类...”错误,因为我没有正确定义类方法。以下是我所拥有的:

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

classA.h
-(void)databaseBuild;

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

这就是我将课程改为:

classA.h
    +(void)databaseBuild;

  classA.m

    +(void)databaseBuild
      {
        ...
       }

然而,我现在收到的是一大堆错误。所有这些都基本上围绕在类方法中访问的实例变量而不是“变量”。是否有创建类的“最佳实践”以避免此类错误?

2 个答案:

答案 0 :(得分:0)

用于objective-c方法

- (void)method {}

将创建一个可以按如下方式使用的实例方法:

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

而另一只手

+ (void)method {}

将创建一个可以使用以下方法调用的类方法:

[MyClass method]

由于在objective-c中没有类变量这样的事实,您收到的错误(但您可以在全局范围内创建静态变量作为解决方法)

答案 1 :(得分:0)

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

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

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

最有可能的是,将头文件#import导入到您尝试使用[view1 databaseBuild]的文件中。

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