尝试使用Objective-C中的类但未能这​​样做

时间:2013-07-20 22:27:01

标签: objective-c class

我是Objective-C的新手,我正在尝试解决类的工作原理,我能够创建类,然后在其中创建方法,然后#import将类放入AppDelegate.m文件中。但是,当我在类中引用该方法时会出现问题,例如[class1 something]

最初,我在class1的标题和主文件中有以下内容:

头:

#import <Foundation/Foundation.h>

@interface class1 : NSObject

- (void)something;

@end

主:

#import "class1.h"

@implementation class1
- (void)something
{
    NSLog(@"Hello, World");
}
@end

但是在这样做时,当我从something调用方法AppDelegate.m时,我遇到了以下错误:No known class method for selector 'something'

然后我尝试将标头版和主要类文件中的- (void)更改为+ (void),因为我在+以外的地方阅读会使方法成为class method和{{1将方法设为-。我尝试了然后运行代码并得到以下错误:

instance method

我尝试搜索错误的解决方案,但没有找到。 有什么我做错了吗?我对Objective-C类的理解是错误的吗?请帮忙!

非常感谢!

3 个答案:

答案 0 :(得分:2)

让我们从命名约定开始。类应该有一个大写字母作为名称的第一个字母。因此,将class1更改为Class1

接下来,- (void)something是一个实例方法,因此您需要创建一个Class1实例来调用该方法。你应该将它保存为实例方法,这可能是你想要的,而不是类方法。

Class1 *class1 = [[Class1 alloc] init];
[class1 something];

答案 1 :(得分:1)

您需要实例化该类以访问非静态方法。

class1 *firstObject = [[class1 alloc] init];

[firstObject something];

答案 2 :(得分:1)

好的,当您从您创建的类和应用程序委托中引用该类时,您在所做的所有事情中都是正确的。

确保执行以下操作:

  • 确保您的方法是 - (无效)
  • 确保#import it
  • 在委托中初始化类
  • 调用方法

喜欢这样

 //in app delegate
 #import "className.h"

 className *classN = [[className alloc] init];
 [classN something];

这会将类初始化为一个对象,从该类调用该方法,并使其调用NSlog。

然后确保从内存中取出

 [classN release];