IOS - NSMutableString:追加和初始化属性

时间:2012-04-21 22:03:07

标签: objective-c ios nsxmlparser nsmutablestring

我显然没有得到这个。

我正在解析一个XML文档,因此我有一个NSMutableString可以附加到其中一个元素,因为foundCharacters会被截断并分成几部分。我可以把这一切都搞定但我不明白为什么以某种方式做它不起作用。

@property (copy, nonatomic) NSMutableString *currentFoundCharacter;

这就是我为ViewController声明属性的方法。

然后我有:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
  {
    if (!currentFoundCharacter) {
      currentFoundCharacter = [[NSMutableString alloc] init]; // Have to do this or new strings never append to it.
    }
    if ([currentAttribute compare:@"description"] == NSOrderedSame && currentAttribute.length > 1) {
    [currentFoundCharacter appendString:[string copy]];
  }

现在这就行了。它将在我想要的所有元素中组合。但如果我尝试使用合成方法,我会收到有关改变不可变对象的错误,所以基本上用self.currentFoundCharacters替换所有currentFoundCharacters。

也许我误解了何时以及为什么使用属性vs实例变量但在init方法之外,这样我觉得最好使用setter / getters。最后,我只想确保编写可维护的代码。

1 个答案:

答案 0 :(得分:3)

在您的媒体资源中使用保留而非复制。复制为您提供不可变的副本。