使用框架时如何将NSMutableString转换为NSString?

时间:2010-05-19 19:46:56

标签: objective-c frameworks nsstring nsmutablestring

我编写了一个Objective-C框架,它使用NSMutableString构建一些HTML代码,该代码将值作为NSString返回。

我在接口.h文件中声明了NSString和NSMutableString:

NSString *_outputLanguage;        // Tests language output
NSMutableString *outputBuilder;
NSString *output;

这是来自框架实现.m代码的示例(我无法打印实际代码,因为它是专有的):

-(NSString*)doThis:(NSString*)aString num:(int)aNumber {
if ([outputBuilder length] != 0) {
    [outputBuilder setString:@""];
}
if ([_outputLanguage isEqualToString:@"html"]) {
    [outputBuilder appendString:@"Some Text..."];
    [outputBuilder appendString:aString];
    [outputBuilder appendString:[NSString stringWithFormat:@"%d", aNumber]];
}
else if ([_outputLanguage isEqualToString:@"xml"]) {
    [outputBuilder appendString:@"Etc..."];
}
else {
    [outputBuilder appendString:@""];
}
output = outputBuilder;
return output;
}

当我写一个文本程序时,NSLog只打印出“(null)”。我在那里写的代码是:

TheClass *instance = [[TheClass alloc] init];
NSString *testString = [instance doThis:@"This String" num:20];
NSLog(@"%@", testString);
[instance release];

我希望这是足够的信息!

3 个答案:

答案 0 :(得分:3)

我猜你忘记了alloc/init你的琴弦......

答案 1 :(得分:0)

您的doThis:方法似乎没有初始化outputBuilder。因此,如果它是一个空指针,则不会对它做任何事情。

答案 2 :(得分:0)

确保outputBuilder有效。你在哪里alloc/init