请问iOS的堆栈概念 和windows的有什么区别么? 另外 而把initWithString换成initWithFormat 计数器就是1 同事说的 NSString是很特殊的 没有计数器概念 没有retain、assign操作, |
|
![]() 10分 |
没有区别.
NSString本身没有什么特殊的,这里的问题在于使用常量字符串去初始化一个NSString,而系统会对常量字符串进行优化,所有引用同一个常量字符串的NSString共享同一块内存,这块内存位于常量区,引用计数为7fffffff,表示不使用通常的引用计数管理机制,不会释放. |
![]() |
谢谢你的答复哈
我不明白的是 我明明有一个alloc操作 就应该是放到堆上去了的吧, 为什么要根据initWithxxxx作出不同的操作呢, |
![]() 10分 |
@”string” 是常量,所以,它就没有开辟新的空间,仅是一个指针。initWithFormat 是要开辟空间滴??
|
![]() 20分 |
alloc根据apple讲,是一个变量声明的产生的过程,并没有跟C一样分配空间。
1,NSString* str = [[NSString alloc] initWithString:@”string”]; 3,NSString* str = [NSString stringWithString:@”string”]; |