繁体   English   中英

从Objective-C中的方法返回整数

[英]returning an integer from a method in objective-c

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

这是我所拥有的:

简单的

@interface simple : NSObject {
}
- (int)simpleMethod;
@end

简单的

#import "simple.h"
@implementation simple
- (int)simpleMethod {
    return 0;
}
@end

simpleViewController.m

- (IBAction)simpleButtonPressed:(id)sender {
    int test = [simple simpleMethod];
}

我在“ int test ...”行上收到一条警告,提示“简单可能不会响应'+ simpleMethod'”。 另一个警告说,“初始化不使用强制转换就从指针生成整数”。

我的程序在此行崩溃,因此尽管这只是一个警告,但似乎是一个问题。

我希望能够使用“ simpleMethod”而不创建类“ simple”的实例。 这可能吗?

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

当前,您已经将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];
}

注意方法定义上的“ +”

还有typo(?),其中您具有queryDatabase的类定义,但是simple的类实现

您可能要使用NSInteger。 它们是同一回事,但是我认为这是更正确的格式化方法(因为我看到您正在与UIViewController进行交互)。

同样要注意的是,您将无法使用self in class方法访问实例方法,因为显然没有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];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM