在类中初始化NSString *指针的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在类中初始化NSString *指针的方法相关的知识,希望对你有一定的参考价值。

我在我的课程中使用NSString,并且经常需要将字符串值复制到另一个类。但我的问题是如何初始化字符串,例如init? (值是类成员,以下调用在init中)

value = [NSString stringWithCString:inStrning encoding:NSASCIIStringEncoding];

要么

value = [[NSString alloc] initWithCString:inStrning encoding:NSASCIIStringEncoding];

这有什么区别?初始化完成后,第一次调用中分配的内存是否释放?我使用value作为assign财产。使用copy会更好吗?

当我使用某种方法将字符串传递给类时,复制字符串怎么样?例:

-(id) initWithObjectTypeStr:(NSString*)inTypeStr
{
    ...
    objectTypeStr = [NSString stringWithString:inType];
    //or 
    objectTypeStr = [[NSString alloc] initWithString:inType];
}

objectTypeStr未定义为属性,因此它具有默认属性(我认为是assign)。

在这种情况下使用的最佳做法是什么?

答案
[NSString alloc] initWithString:@""]

返回您拥有的字符串,您将不得不释放它。

[NSString stringWithString:@""]

返回将由autoreleasepool释放和清理的自动释放对象。

我建议你阅读memory management documentation

另一答案

不同的是,在这种情况下,objectTypeStr = [NSString stringWithString:inType]; objectTypeStr是自动释放的,你不拥有该对象。

objectTypeStr = [[NSString alloc] initWithString:inType];中,您获取对象的所有权,因为您使用alloc或new分配它,因此您有责任在使用后释放它

以上是关于在类中初始化NSString *指针的方法的主要内容,如果未能解决你的问题,请参考以下文章

在类中获取指向自身的指针

C ++ - 在类中构造对象

C++学习 之 类中的特殊函数和this指针

如何在类中有函数指针?

代码块{}

单例模式