今天学习iOS开发中,关于textfield和textview的相关内容,其实也就是按照SAM ios6 application development 第7章中介绍的例子在编写了。其中程序的作用是可以读取textfield中的内容然后替换掉textview中标记出来的地方。
程序最后3行:
self.theStory.text = [self.theTemplate.text
stringByReplacingOccurrencesOfString:@"<place>" withString:self.thePlace.text];
NSLog(@"theStory:%@",self.theStory.text);
self.theStory.text = [self.theStory.text
stringByReplacingOccurrencesOfString:@"<verb>" withString:self.theVerb.text];
self.theStory.text = [self.theStory.text
stringByReplacingOccurrencesOfString:@"<number>" withString:self.theNumber.text];
关于该函数的Description:
Returns a new string in which all occurrences of a target string in the receiver are replaced by another given string.
函数returns:
A new string in which all occurrences of target
in the receiver are replaced by replacement
.
也就是说调用该函数后,原来的对象并没有发生变化,而是返回一个新的对象,所以如果每次都是对template中的text进行替换,当然相当于只进行了最后一个函数,对number的替换。
后来偶然翻到了别人研究这个函数发现的问题,还看到这个函数得到的新对象是autorelease属性的,不需要手动对其release:
NSString * s = [[NSString alloc] initWithFormat:@"1s"];
s = [s stringByReplacingOccurrencesOfString:@"s" withString:@"x"];
NSLog(@"%@",s);
[s release];