我在弄清楚如何从方法中简单地返回一个整数时遇到了问题。
这就是我所拥有的:
simple.h
@interface simple : NSObject {
}
- (int)simpleMethod;
@end
simple.m
#import "simple.h"
@implementation simple
- (int)simpleMethod {
return 0;
}
@end
simpleViewController.m
- (IBAction)simpleButtonPressed:(id)sender {
int test = [simple simpleMethod];
}
我在“int test ...”行上发出警告,说“简单可能不会响应'+ simpleMethod'”。另一个警告说,“初始化从没有强制转换的指针生成整数”。
我的程序在这一行崩溃了,所以虽然这只是一个警告,但这似乎是一个问题。
我希望能够使用“simpleMethod”而无需创建“简单”类的实例。这可能吗?
问题已解决:根据彼得的建议将 - 更改为+。
答案 0 :(得分:6)
目前,您已将simpleMethod定义为实例方法。但要做你想做的事,你需要将方法定义为类方法:
@interface simple : NSObject {
}
+ (int)simpleMethod;
@end
#import "simple.h"
@implementation simple
+ (int)simpleMethod {
return 0;
}
@end
- (IBAction)simpleButtonPressed:(id)sender {
int test = [simple simpleMethod];
}
注意方法定义中的“+”
还有错误(?),其中您有queryDatabase
的类定义,但是simple
的类实现
答案 1 :(得分:0)
您可能想要使用NSInteger。它们是相同的,但我相信格式化更正确(因为我看到你正在与UIViewController进行交互)。
同样重要的是要注意,你将无法在类方法中使用self访问实例方法,因为很明显没有自我指向的实例。正如Josh在下面指出的那样你可以使用self,但它指的是类,而不是它的实例。
+符号是一种类方法
- 是一种实例方法。
@interface Simple : NSObject
+ (NSInteger)simpleMethod;
@end
#import "Simple.h"
@implementation Simple
+ (NSInteger)simpleMethod
{
return 0;
}
@end
- (IBAction)simpleButtonPressed:(UIButton *)sender
{
NSInteger test = [simple simpleMethod];
}