一个菜鸟问题.
如果我有一个字符串@"你好我是一个字符串".是@""一个对象?它是什么 ?它存放在哪里?
如果我发布一个我没有创建的对象会发生什么?或者它的复杂性是什么?
NSString *string1 = [[NSString alloc] initWithString:@"string"];
NSString *string2 = string1;
[string2 release];
Run Code Online (Sandbox Code Playgroud)
还有一个问题是什么区别?
NSString *string1 = [[NSString alloc] initWithString:@"string"];
NSString *string2 = @"string";
Run Code Online (Sandbox Code Playgroud)
我知道我是一个菜鸟但我只是想知道.
提前致谢
编辑:
我的意思是说init initWithString而不是stringWithString
永远不要释放您不拥有的对象.规则很简单:你只拥有一个对象如果通过使用得到它new
,alloc
,retain
或copy
(NARC的简称).
通过任何其他方法获得的对象应返回自动释放.这意味着该对象将在下一个自动释放池排水管上自动释放.如果你想保留对象,你需要retain
它然后release
它.如果您在当前范围内使用完对象后不关心对象是否已取消分配,则不要对其执行任何操作.
所以,总结一下:
release
release
autorelease
d个对象retain
任何autorelease
d对象解决您的具体问题:
@"Hello i am a string"
是一个对象.它是一个实例,NSConstantString
它在编译时创建.你不能也不应该release
.它将在应用程序的整个生命周期中继续存在.看看这个问题,了解更多相关信息. 归档时间: |
|
查看次数: |
167 次 |
最近记录: |