从objective-c中的方法返回一个整数

时间:2012-02-15 01:58:10

标签: iphone objective-c ios

我在弄清楚如何从方法中简单地返回一个整数时遇到了问题。

这就是我所拥有的:

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”而无需创建“简单”类的实例。这可能吗?

问题已解决:根据彼得的建议将 - 更改为+。

2 个答案:

答案 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];
}