NSMutableString追加什么也没做

时间:2012-07-04 07:56:23

标签: objective-c ios

使用C ++后,我是Objective-C的新手。 我在XML文件解析期间使用NSMutableString时出现问题。 我有这样的NSMutableString结构:

struct HotelStruct {
...
NSMutableString *h_name;
...
};

然后,我将CurrentStruct声明为我的ParserDelegate的实例变量:

@interface ParserDelegate : NSObject <NSXMLParserDelegate> {
...
struct HotelStruct CurrentStruct;
...
}

最后,我试图将一个字符串附加到CurrentStruct.h_name(m_isName == YES):

-(void)parser:(NSXMLParser*)parser foundCharacters:(NSString *)string {
if (m_isName) {
[CurrentStruct.h_name appendString:string];
}

但是调试器说在执行AppendString之后,CurrentStruct.h_name仍然是0x0,而字符串变量具有所需的值。 我有点困惑,因为它看起来像是刚跳过appendString。 我很感激任何帮助。谢谢!

3 个答案:

答案 0 :(得分:3)

您需要初始化字符串对象:

h_name = [[NSString alloc] init];

并且不要忘记在完成后释放它:

[h_name release];

答案 1 :(得分:0)

是否有理由不使用标准对象而不是结构?这可能发生了,因为NSString尚未初始化/分配。

试试这个:

CurrentStruct-> h_name = [[NSString alloc] init];

答案 2 :(得分:0)

它会正常工作

 -(void)parser:(NSXMLParser*)parser foundCharacters:(NSString *)string {

     if (m_isName) {

         if(!CurrentStruct.h_name)
             CurrentStruct.h_name = [[NSMutableString alloc] init];

           [CurrentStruct.h_name appendString:string];

           NSLog(CurrentStruct.h_name);
           NSLog(m_isName);
       }
    }

注意:请在使用后检查控制台日志和不要忘记释放内存