gpt4 book ai didi

objective-c - 在 NSString replaceCharactersInRange 处崩溃

转载 作者:行者123 更新时间:2023-11-28 23:09:12 25 4
gpt4 key购买 nike

我有以下代码:

-(void) swapCharacters: (NSMutableString *) set : (NSInteger) first : (NSInteger) second    {

NSLog(@"swap: set = '%@', first = '%d', second = '%d'", set, first, second);
NSRange rangeSecond = NSMakeRange((NSUInteger) second, 1);
NSRange rangeFirst = NSMakeRange((NSUInteger) first, 1);

[set replaceCharactersInRange:rangeSecond withString:[set substringWithRange:rangeFirst]];
}

NSLog 打印是:set = 'happy', first = '0', second = '0'但是程序在 [set rangeFirst = ......] 处崩溃,没有任何调试信息。

感谢您的帮助。

最佳答案

我发现您的代码中有几处需要更改。这是我为使您的交换功能正常工作所做的工作。

这是函数:

-(void) swapCharacters: (NSMutableString *)set withInteger: (int)first andInteger: (int)second{

NSLog(@"swap: set = '%@', first = '%i', second = '%i'", set, first, second);
NSRange rangeSecond = NSMakeRange(second, 1);
NSRange rangeFirst = NSMakeRange(first, 1);

[set replaceCharactersInRange:rangeSecond withString:[set substringWithRange:rangeFirst]];
NSLog(@"swap: set = '%@', first = '%i', second = '%i'", set, first, second);
}

函数是这样调用的:

FooClass *fooObjectVar = [[FooClass alloc] init];

NSMutableString *myString = [[NSMutableString alloc] initWithString:@"Hello"];

[fooObjectVar swapCharacters:myString withInteger:0 andInteger:0];

[fooObjectVar release];
[myString release];

这是输出:

2011-12-30 14:19:00.501 StackOverflowHelp[748:903] swap: set = 'Hello', first = '0', second = '0'
2011-12-30 14:19:00.504 StackOverflowHelp[748:903] swap: set = 'Hello', first = '0', second = '0'

*请注意,对于 objective-c 中的函数,名称就像是描述

*我没有使用 NSInteger,而是使用了普通的 int,因为这里不需要 NSInteger

*当使用NSLog 或字符串格式化时,%@ 用于对象(NSString,NSInteger...),%i 用于int,%f 是 float,%d 是 double

希望对您有所帮助,编码愉快!

关于objective-c - 在 NSString replaceCharactersInRange 处崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8683305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com