- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将发布使用 autorelease 著名方法 stringByAppendingString 的示例方法的缺点 3 变体。(xcode 4.6.2.IOS 项目中的非 arc 示例项目)
示例 block 1:不返回任何内容。只是一个奇怪的指向任何内容的点。但不为 null。
示例 block 2:也不返回任何内容!
示例 block 3:返回 A1A2A3。正如预期的那样,但我认为它已经泄漏。
我的问题是:
a) 示例方法 1 在 MAC 项目中按预期工作,但在 IOS 项目中不工作。
b) sample block 3 是否存在泄漏?
c) 查看示例 block 2 中的注释。word_ 变为 A1、A1A2,什么也没有。为什么?
d)您会以不同的方式编写自己的相同方法的代码吗?我正在寻找安全的标准方法。
谢谢。
<小时/> 示例 block 1-(NSString*)sampleMethod
{
NSString *word_=@"";
NSString *a1=@"A1";
NSString *a2=@"A2";
NSString *a3=@"A3";
word_=[word_ stringByAppendingString:a1];// word_ is A1
word_=[word_ stringByAppendingString:a2];// word is nothing but another pointer
word_=[word_ stringByAppendingString:a3];// word is nothing too but pointer changed.
return word_;
}
示例 block 2
-(NSString*)sampleMethod
{
NSString *word_=@"";
NSString *a1=@"A1";
NSString *a2=@"A2";
NSString *a3=@"A3";
word_=[word_ stringByAppendingString:a1];// word_ is A1
word_=[[word_ stringByAppendingString:a2]retain];// word is A1A2
word_=[[word_ stringByAppendingString:a3]retain];// word is nothing !
return word_;
}
示例 block 3
-(NSString*)sampleMethod
{
NSString *word_=@"";
NSString *a1=@"A1";
NSString *a2=@"A2";
NSString *a3=@"A3";
word_=[[word_ stringByAppendingString:a1]retain];// word_ is A1
word_=[[word_ stringByAppendingString:a2]retain];// word_ is A1A2
word_=[[word_ stringByAppendingString:a3]retain];// word_ is A1A2A3
return word_;//returns as expected but I think leaks method in this method.
}
<小时/>我的回答:只是因为我没有做错任何事。并且通过调试过程步骤非常敏锐地收集了变量值。
但在清理项目后不知怎的就解决了。希望这可以为某人节省几个小时。或者不知道内存芯片地址可能出了问题。
最佳答案
第一个是唯一能够正确进行内存管理的方法。第二个泄漏了两个 NSString 实例,第三个泄漏了三个 NSString 实例。如果您没有从第一个方法中获取字符串“A1A2A3”,则错误位于该方法之外的某个位置。
对于您发送的每条保留消息,您还必须在同一方法中发送释放或自动释放消息,除非您的方法名称以 alloc 或 copy 开头。在这种情况下,调用者需要释放返回的对象。
关于objective-c - stringByAppendingString 和保留困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17536194/
我有一个 NSString 是一封信,另一个是他们的签名。我需要将两者组合成一个字符串来显示,但签名需要以不同的字体和大小显示。是的,字体和大小都可以自行发挥作用。 现在我有如下: NSString
这就是我在 playground 文件中尝试的内容。我想要的结果是使用 stringByAppendingString 的第二个 println 结果。 stringByAppendingString
我正在尝试获取一个字符串数组并获取每个项目并将其放入字符串格式。我写了一个方法来执行此操作,因为我需要将列出的数组值连接到另一个字符串中。由于某种原因,我无法正确列出数组值,返回了一个空字符串。 -
我将发布使用 autorelease 著名方法 stringByAppendingString 的示例方法的缺点 3 变体。(xcode 4.6.2.IOS 项目中的非 arc 示例项目) 示例 bl
在使用 DataHelper 类中定义的以下函数返回的值设置标签时获取 EXC_BAD_ACCESS(所有数据库处理均在此处完成): +(NSString *)getCurrentBalanceAnd
我正在使用带有 ARC 的 Cocos2d 2.0,这是我的代码: hudAndPlayerFileName = @"hud"; //...other code hudAndPlayer
当我在一个“大”(37000 行)文本文件上运行以下代码时,有人能指出为什么我的系统告诉我应用程序内存不足吗? -(void) writeToFile: (NSString*)filePath wit
我想把我的字符串:@"test"改成@"----" 在控制台中我得到:“对象返回空描述” 我尝试为 foo 中的每个字符创建 foo2 中的“-”,以便我得到:“----”,但它不起作用。我查看并发现
我需要连接两个 NSStrings ,我写了下面的代码: NSString *reverseResult = [[NSString alloc] initWithFormat:@""]; NSStri
我正在尝试修复一个我无法重现的错误,它不会发生在我的设备(iPhone 5s)或任何 iOS 模拟器中,但只在我客户的 iPhone 7 中发生过一次。当客户端删除并重新下载该应用程序时,错误消失了,
因此,我相当确定,如果我计划经常操作字符串(例如使用 stringByAppendingString),我应该使用 NSMutableString 类型的变量。 但是如果我做这样的事情怎么办? UIL
我写了以下代码: NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil er
为什么这个语法有效 NSString* newDisplayText = [currentDisplayText stringByAppendingString:digit]; 而这一个,(首先
NSString *tmpStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; xmlSms = [xmlS
我是一名优秀的程序员,十分优秀!