You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MRC环境下两种基于整数创建NSString实例的语法有何区别

MRC场景下两种NSString创建方法的区别

两种写法核心差异集中在内存所有权归属、释放规则两个维度,具体如下:

  • 第一种写法:NSString *str1 = [NSString stringWithInt: 10];
    属于类工厂方法生成的对象,返回的是自动释放对象,默认会被加入当前线程的自动释放池。MRC规则下你不持有该对象的所有权,不需要手动调用release释放,当自动释放池销毁时对象会被系统自动回收。如果需要长期持有该对象,必须主动调用retain方法增加引用计数,否则自动释放池销毁后再访问该对象会触发野指针崩溃。
  • 第二种写法:NSString *str2 = [[NSString alloc] initWithInt: 10];
    属于alloc+初始化方法生成的对象,你持有该对象的所有权,初始化完成后引用计数为1。MRC规则下你必须在对象使用完成后主动调用release或者autorelease方法释放对象,否则会产生内存泄漏。

补充说明:上述差异仅在MRC环境下需要开发者手动关注,ARC环境下编译器会自动插入内存管理代码,两种写法对开发者来说感知不到内存管理层面的差异。

内容的提问来源于stack exchange,提问作者Divya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:06:04