首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rot13实现后的低内存警告

Rot13实现后的低内存警告
EN

Stack Overflow用户
提问于 2013-05-11 18:00:31
回答 2查看 418关注 0票数 0

最近,我在我的项目中添加了一个rot13函数,这样我就可以在互联网上找到一个字符串,rot13,rot13,want.The示例代码。就在我腐烂了一个字符串之后,我得到了一个低内存警告,并且100%肯定这是由于在function.No之前的rot13低内存警告。下面是我的代码:13、code 13、

代码语言:javascript
复制
#import <Foundation/NSString.h>

@interface NSString (rot13)
+ (NSString *)rot13:(NSString *)theText;
@end

rot13.m 13.m

代码语言:javascript
复制
#import "rot13.h"
@implementation NSString (rot13)

+ (NSString *)rot13:(NSString *)theText {
    NSMutableString *holder = [[NSMutableString alloc] init];
    unichar theChar;
    int i;

    for(i = 0; i < [theText length]; i++) {
        theChar = [theText characterAtIndex:i];
        if(theChar <= 122 && theChar >= 97) {
            if(theChar + 13 > 122)
                theChar -= 13;
            else
                theChar += 13;
            [holder appendFormat:@"%hhd", (char)theChar];


        } else if(theChar <= 90 && theChar >= 65) {
            if((int)theChar + 13 > 90)
                theChar -= 13;
            else
                theChar += 13;

            [holder appendFormat:@"%C", theChar];

        } else {
            [holder appendFormat:@"%C", theChar];
        }
    }

    return [NSString stringWithString:holder];
}

@end

我的rot13是这样的:

代码语言:javascript
复制
NSString *mystring=[defaults stringForKey:@"name"];
NSString *rotted = [NSString rot13:mystring];

有什么帮助吗?我应该发布什么吗?为什么这个简单的任务调用低内存警告?

EN

回答 2

Stack Overflow用户

发布于 2013-05-11 19:14:02

对于字符串中的每个字符,您都要运行字符串格式处理程序(slow),并将单个字符附加到可变字符串(也是slow)中。很可能,其中一个操作是创建某种类型的自动释放字符串作为实现细节。再加上逐字操作,很容易导致记忆压力.

一个更好的解决方案是创建一个输入字符串的可变副本,然后迭代这些字符,并在执行过程中替换每个字符。请注意,面对非7位ASCII,ROT13将不幸地失败;unicode将使其崩溃。如果我没记错的话,unichar是一个16位类型。

票数 3
EN

Stack Overflow用户

发布于 2013-05-11 21:17:47

所有附加的字符串很可能是创建一组临时字符串,这些字符串在方法完成之前不会释放。

您可以创建一个NSMutableArray并将每个字符追加到其中,然后使用componentsJoinedByString:在最后一步将数组转换为字符串。

应该有效..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16500175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档