Iphone 如何调用非void函数?Xcode
如何调用非void函数?正常Iphone 如何调用非void函数?Xcode,iphone,function,methods,void,Iphone,Function,Methods,Void,如何调用非void函数?正常[self-methodName]工作。但是对于一个返回NSString的方法,我该怎么做呢。我总是出错。例如: + (NSString *)formulateYQLRequestFor:(NSArray *)tickers 这叫什么[self formulateYQLRequestFor]给了我一个错误 很抱歉,由于某些原因,safari不允许我缩进。 谢谢 我不知道-(NSString*)formulateYQLRequestFor:对NSArray有什么作用
[self-methodName]代码>工作。但是对于一个返回NSString
的方法,我该怎么做呢。我总是出错。例如:
+ (NSString *)formulateYQLRequestFor:(NSArray *)tickers
这叫什么<代码>[self formulateYQLRequestFor]代码>给了我一个错误
很抱歉,由于某些原因,safari不允许我缩进。
谢谢 我不知道-(NSString*)formulateYQLRequestFor:
对NSArray有什么作用,但如果没有必要,您可以调用[self-formulateYQLRequestFor:nil]代码>。或者,您可以使用空数组调用它[self-formulateYQLRequestFor:[NSArray-array]]代码>+
指定类函数。您使用类名而不是实例来调用它
而不是:
[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];
调用[self-formulateYQLRequestFor]有两个问题代码>
首先,该方法接受一个参数,您没有提供这个参数。因此,编译器正在寻找名为formulateYQLRequestFor
的方法,而不是formulateYQLRequestFor:
这很重要,因为:
是Objective-C中方法名称的一部分。因此,您试图调用一个不存在的方法
其次,self
正在向类的实例发送消息。方法签名中的+
表示您有一个类方法,因此self
不会响应您试图调用的方法
正确的方法是:
NSString *resultString = [[self class] formulateYQLRequestFor:someArray];
其中someArray
是一个有效的NSArray
参数。“+”表示一个类方法,您需要放置一个数组(如果方法检查参数,则为nil)。[[self class]formulatyqlrequestfor:[NSArray new]];