Iphone Objective-c指针和NSString

Iphone Objective-c指针和NSString,iphone,objective-c,pointers,Iphone,Objective C,Pointers,如果我有这个代码,为什么textview的文本不更新?据我所知,a*表示指针,我还没有复制过 NSString *searchText = myTextView.text; searchText = [searchText stringByReplacingOccurrencesOfString:@" " withString:@";"]; 那么为什么myTextView的文本没有像我那样更改: myTextView.text = [searchText stringByReplacingO

如果我有这个代码,为什么textview的文本不更新?据我所知,a*表示指针,我还没有复制过

NSString *searchText = myTextView.text;

searchText = [searchText stringByReplacingOccurrencesOfString:@" " withString:@";"];
那么为什么myTextView的文本没有像我那样更改:

myTextView.text = [searchText stringByReplacingOccurrencesOfString:@" " withString:@";"];

我该如何编写代码,以便第一个代码示例按照我的意愿工作?

如果您希望修改
myTextView.text
,则必须像编写第二个示例一样编写代码,并为您尝试修改的属性指定一个新值。为其他变量或属性指定一个新值不会起作用-“”在我们最终实现量子计算时可能会起作用,但我们还没有做到。:-)


展开一点:是,
searchText
是一个指针。但是
myTextView.text
也是如此,当您执行“
searchText=myTextView.text
”时,您并没有在两者之间建立任何持久的关系-您所做的只是使
searchText
指向与
myTextView.text
相同的目标。在该点之后更改其中一个不会对另一个产生影响。因此,当您将
stringByReplacing…
的结果分配给
searchText
时,您正在使其指向不同的目标。

如果您希望修改
myTextView.text
,您必须像第二个示例那样编写它,并为您试图修改的属性分配一个新值。为其他变量或属性指定一个新值不会起作用-“”在我们最终实现量子计算时可能会起作用,但我们还没有做到。:-)


展开一点:是,
searchText
是一个指针。但是
myTextView.text
也是如此,当您执行“
searchText=myTextView.text
”时,您并没有在两者之间建立任何持久的关系-您所做的只是使
searchText
指向与
myTextView.text
相同的目标。在该点之后更改其中一个不会对另一个产生影响。因此,当您将
stringByReplacing…
的结果分配给
searchText
时,您正在使其指向不同的目标。

第二个示例调用“text”属性的setter

第一个示例获取字符串的指针,然后在同一范围内更改指针。因此,“文本”不变

顺便说一句:根据属性的定义,您使用的setter将复制、保留或分配您给setter的值。因此,如果您使用以下选项:

@property(copy) NSString* text;
然后是,setter将复制您在调用时给它的值:

myTextArea.text = //some string

第二个示例调用“text”属性的setter

第一个示例获取字符串的指针,然后在同一范围内更改指针。因此,“文本”不变

顺便说一句:根据属性的定义,您使用的setter将复制、保留或分配您给setter的值。因此,如果您使用以下选项:

@property(copy) NSString* text;
然后是,setter将复制您在调用时给它的值:

myTextArea.text = //some string

StringByReplace方法。。。不更改字符串,它将返回一个新的字符串对象(根据命名约定自动删除)。因此,在第二行代码之后,searchText指向一个完全不同的NSString对象


此外,NSString对象不能更改,因为存在NSMutableString方法StringByReplace。。。不更改字符串,它将返回一个新的字符串对象(根据命名约定自动删除)。因此,在第二行代码之后,searchText指向一个完全不同的NSString对象


此外,NSString对象不能更改,因为有NSMutableString

谢谢,您上一段的回答最有意义。执行
searchText=myTextView.text时,我正在更改searchText指向的位置,而不是更改searchText指向的位置的内容。有没有办法更改where
searchText
指向的内容?只有当searchText指向NSMutableString实例时,才能更改NSString的内容。谢谢,您上一段的回答最有意义。执行
searchText=myTextView.text时,我正在更改searchText指向的位置,而不是更改searchText指向的位置的内容。是否有方法更改where
searchText
指向的内容?仅当searchText指向NSMutableString实例时,才能更改NSString的内容。