far*_*adf 0 iphone cocoa objective-c
假设我有一个已经通过alloc/init组合初始化为字符串的变量.如果我通过处理重新分配它,我会有内存泄漏吗,即.
NSString *s = [[NSString alloc] initWithString:someOtherStringVariable];
s = [s stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
Run Code Online (Sandbox Code Playgroud)
这里有内存泄漏吗?如果是这样,我是否需要创建另一个变量(例如s2),执行此分配,然后释放原始变量?
NSString *s = [[NSString alloc] initWithString:someOtherStringVariable];
NSString *s2 = [s stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[s release];
Run Code Online (Sandbox Code Playgroud)
现在,如果其他字符串是常量,如@"其他字符串",该怎么办?我需要担心泄漏吗?即.
NSString *s = [[NSString alloc] initWithString:@"Some other string"];
s = [s stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
Run Code Online (Sandbox Code Playgroud)
谢谢
这绝对是一个漏洞.处理这类问题的最简单方法是尽快自动发布:
NSString *s = [[[NSString alloc] initWithString:@"Some other string"] autorelease];
s = [s stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
Run Code Online (Sandbox Code Playgroud)
您也可以使用NSMutableString来实现这一点(如果这不是一个名义上的例子).
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |