我有以下代码:
-(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 = ...........]崩溃而没有任何调试信息。
感谢您的帮助。
答案 0 :(得分:2)
我在代码中发现了一些应该更改的内容。以下是我为使交换功能工作所做的工作。
这是功能:
-(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 用于浮点数,%d 用于加倍
我希望有帮助,快乐的编码!
答案 1 :(得分:0)
我只是试试你的代码,它就像我一样为我工作
-(void) swapCharacters: (NSMutableString *) set first: (NSInteger) first second: (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]];
}
我称之为
NSMutableString *s = [NSMutableString stringWithString:@"Hello"];
[self swapCharacters:s first:0 second:3];
NSLog(@"s == %@", s);
这是我得到的NSLog:
2011-12-30 15:13:48.822 tabbar [908:207] swap:set ='Hello',first ='0',second ='3'
2011-12-30 15:13:48.823 tabbar [908:207] s == HelHo
在调用它时,是否将NSMutableString或NSString传递给该方法? 通过NSString,这是我能够使代码崩溃的唯一方法。