Objective c 返回字符串的函数
听起来可能很傻,但我正在尝试用objective-c编写一个简单的函数,返回一个字符串并显示它,下面的代码几乎可以工作,但我无法让printf接受函数返回值Objective c 返回字符串的函数,objective-c,Objective C,听起来可能很傻,但我正在尝试用objective-c编写一个简单的函数,返回一个字符串并显示它,下面的代码几乎可以工作,但我无法让printf接受函数返回值 NSString* getXMLElementFromString(); int main(int argc, char *argv[]) { printf(getXMLElementFromString()); return NSApplicationMain(argc, (const char **) argv);
NSString* getXMLElementFromString();
int main(int argc, char *argv[])
{
printf(getXMLElementFromString());
return NSApplicationMain(argc, (const char **) argv);
}
NSString* getXMLElementFromString() {
NSString* returnValue;
returnValue = @"Hello!";
return returnValue;
}
我不知道printf能处理NSString。试着做一些事情,比如:
printf ("%s\n", [getXMLElementFromString()cString]);
我不知道printf能处理NSString。试着做一些事情,比如:
printf ("%s\n", [getXMLElementFromString()cString]);
您应该改为使用
NSLog()
,它将字符串(或格式字符串)作为参数
你可以用任何一个
NSLog(getXMLElementFromString());
或
其中,
%@
标记指定一个Objective-C对象(在本例中为NSString)NSLog()
的工作原理与printf()
在格式化字符串时基本相同,只是它也会接受对象标记。您应该改为使用NSLog()
作为参数
你可以用任何一个
NSLog(getXMLElementFromString());
或
其中,
%@
标记指定一个Objective-C对象(在本例中为NSString)NSLog()
在格式化字符串时与printf()
基本相同,只是它也会接受对象标记。NSString*
与传统的C字符串不同,这是printf
所期望的。要以这种方式使用printf
,您需要利用NSString API从中获取以null结尾的字符串:
printf("%s", [getXMLElementFromString() UTF8String]);
NSString*
不等同于传统的C字符串,这是printf
所期望的。要以这种方式使用printf
,您需要利用NSString API从中获取以null结尾的字符串:
printf("%s", [getXMLElementFromString() UTF8String]);
第一种形式几乎总是应该避免的——如果攻击者都能指定格式字符串,你会很快被攻破。第一种形式几乎总是应该避免的——如果攻击者都能指定格式字符串,你会很快被攻破。谢谢你的帮助,好极了。谢谢你的帮助,好极了。如果你要做任何严肃的可可工作,我仍然会争论使用
NSLog()
而不是printf()
。更喜欢-UTF8String
而不是-cString
-检查NSString文档。我仍然会争论使用NSLog()
而不是printf()
如果您要做任何严肃的工作,请选择-UTF8String
而不是-cString
-查看NSString文档。