如何调用非空函数?正常[self methodName];
有效。但是,如何为返回NSString
的方法执行此操作。我一直在收到错误。例如:
+ (NSString *)formulateYQLRequestFor:(NSArray *)tickers
我该怎么称呼它? [self formulateYQLRequestFor];
给了我一个错误。
抱歉格式化,出于某种原因,safari不会让我缩进。 谢谢!
答案 0 :(得分:1)
+
指定一个类函数。您可以使用类名称来调用它,而不是实例。
而不是:
[self formulateYQLRequestFor:myArray];
这样做:
[MyClassName formulateYQLRequestFor:myArray];
或者,你可以这样做:
[[self class] formulateYQLRequestFor:myArray];
如果您不想,您不必对返回值做任何事情。至少使用ARC,返回值将自动释放。但是,由于函数不可能单独执行任何操作,因此您可能应该对返回值执行某些操作:
NSString *returnValue = [[self class] formulateYQLRequestFor:myArray];
// Do something with returnValue
最后,如果你想在不传入数组的情况下调用函数,你仍然需要数组参数,但是函数可能会接受数组的nil
:
NSString *returnValue = [[self class] formulateYQLRequestFor:nil];
答案 1 :(得分:0)
我不知道- (NSString *)formulateYQLRequestFor:
对NSArray的作用,但如果没有必要,您可以致电[self formulateYQLRequestFor:nil];
。或者,您可以使用空数组[self formulateYQLRequestFor:[NSArray array]];
调用它。
答案 2 :(得分:0)
致电[self formulateYQLRequestFor];
首先,该方法采用您未提供的参数。因此,编译器正在寻找名为formulateYQLRequestFor
而不是formulateYQLRequestFor:
的方法。这很重要,因为:
是Objective-C中方法名称的一部分。所以你试图调用一个不存在的方法。
其次,self
正在向您的班级的实例发送消息。方法签名中的+
表示您有一个类方法,因此self
不响应您尝试调用的方法。
正确的方法是:
NSString *resultString = [[self class] formulateYQLRequestFor:someArray];
其中someArray
是有效的NSArray
参数。