- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我以这种方式声明一个指针变量:
NSString *foo;
然后在我的代码稍后的某个地方做一些事情,例如:
foo = @"bar";
这是否最终会获取我的 NSString,使用附加字符串在内存中创建一个新副本,然后删除我的初始字符串? foo 作为 NSMutableString 会更好吗?
最佳答案
不,foo
是一个变量,持有一个指向 NSString
的指针。作业foo = @"bar"
设置指针 foo
存储的值到 NSString @"bar"
的地址。没有复制。如果foo
已经指向另一个 NSString
例如,不是字符串常量(即像 @"bar"
)并且没有对该实例的其他引用,那么就会出现内存泄漏。你会
[foo release];
foo = @"bar";
在这种情况下。您不需要保留或释放字符串常量,例如 @"bar"
.
字符串常量无法更改,因此如果尝试修改常量字符串的值,将会出现运行时错误。分配 @"bar"
之间没有区别到NSString*
与NSMutableString*
相比。当然,您将无法使用NSMutableString
的变异方法。没有运行时错误,只是因为您将@“bar”(一个 NSString 实例)的地址分配给 NSMutableString*
类型的变量。如果你想改变字符串,你会这样做
NSMutableString *mutableFoo = [@"bar" mutableCopy];
在这种情况下,显然已制作了副本,您有责任释放 mutableFoo
当你完成它时。
关于iphone - 在这种情况下 NSMutableString 比 NSString 更有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/706519/
NSMutableString *str, *str1; //这里分配 我正在使用[str appendString:str1] 不工作。[str appendFormat:str1] 不工作。 那么
@property (nonatomic, weak) id a; @property (nonatomic, weak) id sa; 我有两个弱点。数组将在复制后释放。但是 NSString 没有
我有一个相当大的循环,它获取一个字符串,对其执行一些操作,然后再进入下一个循环。我最初是释放它然后重新分配它,但认为这有点浪费资源,但不知道如何清除它以重用它。 最佳答案 一种方法是[myString
我有为 MD5 munge 准备消息的 java 代码 private static char[] jimsCopyRight = { 'C'、'o'、'p'、'y'、'r'、'i'、'g'、'h'、
我有这个代码: NSMutableString *printHead = [NSMutableString stringWithFormat:@"%@, %@", firstTextField.tex
我在M文件开头声明了一个对象如下: NSMutableString *SomeString; 在一个方法中我尝试初始化它: SomeString = [NSMutableString stringW
我想创建一个字符串。根据条件,我必须附加一些额外的字符串。在这种情况下,首选使用哪个?是根据条件创建两个不同的字符串还是创建可变字符串以根据条件附加新字符串? 前 if(a==1) { Str
一直在玩弄仪器,但运气不太好,无法弄清楚如何解决此内存泄漏问题。 首先是代码: -(NSString *) randomizeHint:(NSString *) wordToShuffle{
我有以下将字符串数组转换为字符串的代码 -(NSString *) arrayToString:(NSMutableArray *) array { NSMutableString *strF
我制作了一个包含几个单词的数组,然后我将所有单词放入一个可变字符串中,然后将这个字符串的每个字符放入一个可变数组中。然而,“wordSplitted”是一个可变的字符数组,在模拟器中每次启动应用程序时
我在使用谓词过滤数组时遇到问题。我的代码是这样的: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
我正在尝试构建一个字符串数组,该数组将添加到 XML soap 请求中。 我有一个简单的循环来构建数组: MarcTagsList 是一个 NSArray 字符串,它包含值 ["82a","100a"
NSMutableString *str = [[NSMutableString alloc] init]; 假设 str 有权知道一个值“me”。 并且在单击按钮时我希望 str 的值被重置。即字符
我是 objective-c 的绝对新手 使用此代码 NSMutableString *teststring; [teststring appendString:@"hey"]; NSLog(test
将 Swift String 转换为 NSString 效果很好。 let string = "some text" let nsString = string as NSString 但是当我这样做
我知道类似的问题已经被一次又一次地问到,但我请求您耐心等待,因为我似乎找不到有帮助的答案。 我的应用程序存在漏洞,这让我抓狂。实际上,使用 Leaks 不会将它们报告为泄漏,但 ObjectAlloc
我正在使用 XMLParser 来解析一些 XML 数据,它使用 NSMutableString *resultString 来存储标记字符。在每个 (- parser: didStarElement
我以字典格式的形式向 nsmutablestring 添加一些文本内容,并且每个字典都由“,”(commos)分隔。但是当获取这个总字符串时,它会显示 (,) 到结尾的字符串。那么如何删除该可变字符串
我有一个很大的 NSMutableString(可能有数百兆字节),需要对其执行大量 rangeOfCharacterFromSet: 操作。 为了提高性能,我想让一个 NSOperationQueu
我有以下代码 NSMutableString *ibmcountryCodeLabel=[[NSMutableString alloc]init]; NSMutableString *imobileN
我是一名优秀的程序员,十分优秀!