我正在尝试从之前的视图控制器创建一个类。它只包含一些数据库设置调用。在我的研究中,我发现我收到了“没有已知的方法类...”错误,因为我没有正确定义类方法。以下是我所拥有的:
View1.m
...
[view2 databseBuild];
...
classA.h
-(void)databaseBuild;
classA.m
-(void)databaseBuild
{
...
}
这就是我将课程改为:
classA.h
+(void)databaseBuild;
classA.m
+(void)databaseBuild
{
...
}
然而,我现在收到的是一大堆错误。所有这些都基本上围绕在类方法中访问的实例变量而不是“变量”。是否有创建类的“最佳实践”以避免此类错误?
答案 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。