【问题标题】:Is is possible to directly set a string value for NSMutableString?是否可以直接为 NSMutableString 设置字符串值?
【发布时间】:2012-08-20 21:24:28
【问题描述】:

我可以轻松地创建一个普通的NSString

NSString *string = @"string value";    // Case 1

有可能做这样的事情吗?

NSMutableString *mutableString = @"mutableString value";    // Case 2

【问题讨论】:

    标签: objective-c cocoa nsmutablestring


    【解决方案1】:

    您可以像其他一些答案中提到的那样初始化字符串,但是对于像这样的常量字符串,我更喜欢发送-mutableCopy 消息:

    NSString* string = @"string value";
    NSMutableString* mutableString = [@"mutableString value" mutableCopy];
    

    这对我来说很容易阅读,但这是风格偏好的问题。

    【讨论】:

    • Jason,mutableString 是 autorelease obj 吗?
    • @user1182731 您无法发送消息mutableString,它没有为NSString 定义。您可以发送mutableCopy,这是一种所有权方法,因为它的消息名称中有copy。如果您不使用 ARC,您将负责释放 -mutableCopy 消息返回的字符串。
    【解决方案2】:

    种类:

    NSMutableString *mutableString = [NSMutableString stringWithString:@"mutableString value"];
    

    【讨论】:

      【解决方案3】:

      案例 2 有效,但不创建可变字符串;它只是将NSString 放入NSMutableString 指针中。该对象仍然是一个常量文字字符串,向它发送类似appendString: 的内容会导致运行时错误。

      您需要通过stringWithString:alloc 后跟initWithString: 分配一个新的NSMutableString。如果您愿意,也可以创建一个空字符串,然后使用setString:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-06
        • 1970-01-01
        • 1970-01-01
        • 2011-03-27
        • 2017-11-09
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多