在Xcode中写了一段下面的代码:
NSString* s1=@"hi,i am sean";
NSString* s2=@"hi,i am sean";
NSString* s3=[NSString stringWithFormat:@"hi,i am %@",@"sean"];
s3=s1;
if (s1==s2) {
NSLog(@"s1 ==s2");
s1=@"i am kaka";
}
在debug模式看了一下,发现s1和s2 居然是同一个指针;
s3虽然字符一样,但是却不是同一个指针,这点通过debug可以观察得到对象不一样;
在s3=s1后,s1,s2,s3的指针完全相同(s3这点我可以理解)
而s1重新设置数据后指针发生了变化;
-------------------
上面这个指针的定义是不是同我印象中C关于指针的定义和构成不一样呢?
是不是在Objective C中相同类型相同数据的对象为了节省内存空间都指到了一个地址呢?
而当重新再分配发生的时候再赋予新的地址?
值得注意的是最初的S3和S1,S2等不是同一种对象类型
(那么两个[Object new]创建的对象是否最初的指针也是一样的呢?理论上这样,NSString本身也是对象。明天来测试。
伴发性的疑惑是如果对象里面有对象,还有属性,重设了任何一个的值,是所有的属性和对象的指针都不相同了呢还是部分还是保持一致?
好像是保持一致?不管了,明天测试完再去重新读一下资料
)