首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在追加到NSString时,我应该使用中间临时变量吗?

在追加到NSString时,通常情况下,我们不需要使用中间临时变量。在Objective-C中,NSString是不可变的,所以当您需要修改字符串时,需要使用NSMutableString。以下是一个示例:

代码语言:objective-c
复制
NSString *originalString = @"Hello, ";
NSString *newString = @"world!";

// 使用NSString的stringByAppendingString方法
NSString *combinedString = [originalString stringByAppendingString:newString];

NSLog(@"Combined string: %@", combinedString);

在这个示例中,我们使用了NSString的stringByAppendingString方法来将两个字符串连接起来。这种方法不需要使用中间临时变量。

如果您需要更改字符串的内容,可以使用NSMutableString。例如:

代码语言:objective-c
复制
NSMutableString *originalString = [NSMutableString stringWithString:@"Hello, "];
NSString *newString = @"world!";

// 使用NSMutableString的appendString方法
[originalString appendString:newString];

NSLog(@"Combined string: %@", originalString);

在这个示例中,我们使用了NSMutableString的appendString方法来将两个字符串连接起来。这种方法也不需要使用中间临时变量。

总之,在追加到NSString时,通常情况下,我们不需要使用中间临时变量。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

控制器和应用数据存储

1、UINavigationController, 继承UIViewController,UINavigationController以栈的形式保存子控制器     1)把控制器添加到导航控制器栈里有两种方式...@property(nonatomic, retain) UIView *titleView; //中间的标题文字 @property(nonatomic, copy) NSString *...iTunes同步设备,不会备份该目录;    4)、Library/Caches 保存应用运行时生成的非重要的需要持久化的数据,iTunes同步设备不会备份该目录;    5)、Library/Prefences...,如何解析      如果父类也遵守了NSCoding协议,应该在encodeWithCoder:方法中加上一句:[super encodeWithCode:encode];      确保继承的实例变量也能被编码...,即也能被归档      应该在initWithCoder:方法中加上一句:self = [super initWithCoder:decoder];      确保继承的实例变量也能被解码,即也能被恢复

79830

科普一下程序运行时内存分配

代码段中,也有可能包含一些只读的常数变量,例如字符串常量等 数据段:储存已被初始化了的静态数据 数据段(data segment )通常是指用来存放程序中已初始化的全局变量的一块内存区域。...当进程调用malloc 等函数分配内存,新分配的内存就被动态添加到堆上(堆被扩张);当利用free 等函数释放内存,被释放的内存从堆中被剔除(堆被缩减) 栈(stack) :栈又称堆栈,是用户存放程序临时创建的局部变量...从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。...NSLog(@"%d", abc == def); 大家认为这个输出结果是什么呢,为什么呢结合上面的理论知识,abc def均是使用的同一个代码块。...编辑器优化是由于@Hello是相同的常量字符因此abc和def可以同时使用同一空间优化内存占用 我们修改代码为 NSString * abc = @"Hello";

1.6K30
  • 两种通过Plist加载图片的方法及问题,九宫格的算法,字典转模型1. 序列帧动画实现2. 图片浏览器-两种加载plist的方式3. 图片浏览器-内存问题4 MVC简单介绍和类前缀5 应用管理-两种加载

    *)#>]; 3.2 如何选择加载图片方式: 常用的图片,(小的按钮/背景)素材,放在 Assets 中,使用 imageNamed 加载,性能高 临时使用的图片,放在项目的Supporting Files...一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key,编辑器没有智能提示,需要手敲。...声明属性 @property (nonatomic, copy) NSString *name;@property (nonatomic, copy) NSString *icon; // 图像,定义属性...h 里面有一个用来接收模型类型的属性 - .m 里面应该有需要显示值的子控件 - 重写set模型的方法,先模拟系统的_xx=xx,把数据放在子控件当中 ### 8.3.3 作为controller...- 解析数据,注意转化成模型.步骤(路径,解析临时数组,创建可变数组,遍历获取字典,字典转模型,把模型添加到可变数组中,返回)

    84630

    phonegap + Framework7 之 ios 推送跳转测试

    先说说项目情况:使用phonegap创建的ios项目,然后使用html + css开发网页中又使用了一个框架Framework7(Framework7是一个构建仿原生ios和android应用的框架...现在在做这个项目的推送消息,碰到了一些问题:接收到推送通知的情况应该是三种:1、程序正在前台运行; 2、程序正在后台运行; 3、程序完全退出后台。...应该是UIWebView加载idnex.html页面后,还把”try{pushSkip('%@');}catch(e){}“代码添加到index.html页面上了,导致一直死循环一直执行。...尼玛,真是痛苦,百度谷歌搜不到自己想要的结果,难道大家没碰到过这个问题?大家碰到这种问题的时候是怎么解决的呢?自己的思路似乎陷入了一个误区,不知道怎么走出来?...又改了改,暂时想出来一个临时办法来: 3、新建一个页面aaa.html,这个页面脱离Framework7框架,是个跳板页面,里面只有一个js方法,作为跳转到index.html页面之用。

    1K30

    iOS - 老生常谈内存管理(二):从 MRC 说起

    不要在初始化方法和 dealloc 中使用访问器方法 你不应该在初始化方法和dealloc中使用访问器方法来设置实例变量,而是应该直接操作实例变量。...进一步解释,假如我们init中使用setter方法初始化实例变量。...使用 Local Autorelease Pool Blocks 来减少峰值内存占用量 许多程序创建autorelease的临时对象。这些对象将添加到程序的内存占用空间,直到块结束。...许多情况下,允许临时对象累积直到当前事件循环迭代结束,而不会导致过多的开销。但是,某些情况下,你可能会创建大量临时对象,这些对象会大大增加内存占用,并且你希望更快地销毁这些对象。...块结束临时对象被release,这可以让它们尽快dealloc,从而减少程序的内存占用。

    1.5K21

    KVO详解(二)

    现在想看一下当被KVO观测的属性值改变的时候,原来的setter方法里面做了哪些事情: ? 然后调试框中使用watchpoint来观测_name的变化: ?...关于函数式编程,之前的文章中有提到过: 1,Block 的高级使用 2,Swift进阶六——函数和闭包 函数式编程会将封装粒度降低到函数级别,它会将函数作为封装的基本单元,并且会减少中间不可变因素的产生...保存KVO信息的模型中,关于观察者observer属性的声明使用的是weak关键字,各位知道是为什么?这是因为如果不使用weak将会导致循环引用。...那么应该在什么时机去交换呢? 应该在创建中间子类的时候,对该子类的dealloc方法进行方法交换。 此时,时机是没有问题了,但是这样写是有问题的。...因此,基于上面的这些分析,我们应该可以猜测KVO观察自动移除的实际和地方了: 中间子类创建的时候复写dealloc方法,然后复写的dealloc中做移除观察者相关的操作(最重要的一步就是将isa重新指回来

    69831

    KVO详解(一)

    之前的文章iOS开发中的设计模式--观察者模式中有介绍过KVO的简单使用,大家可以先去了解一下。今天呢,我们来详细分析下KVO。...然后就第一层if-else来判断变化是来自哪一个对象;第二层if-else来判断变化是来自对象中的哪一个变量。...如果你不想自动发送KVO通知,那么就应该在+ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key方法中返回NO。...isa的指回以及动态子类的销毁 某个对象被KVO观测之后,该对象的isa指针会被修改。那么,这个isa指针的修改会被一致保留?isa指针被修改了之后会再被改回来? 答案是会的。...为了测试,暂且不移除,并且dealloc方法的最后打个断点,当走到断点处的时候,使用llvm指令获取被观测对象的isa指向,如下: ?

    75431

    iOS学习——iOS 宏(define)与常量(const)的正确使用

    概述   iOS开发中,经常用到宏定义,或用const修饰一些数据类型,经常有开发者不知怎么正确使用,导致项目中乱用宏与const修饰。你能区分下面的?知道什么时候用?...取的时候只需要给前面和中间的地址,如果是整形、浮点型会有多份拷贝,但这些数写在指令中。...静态局部变量:当用static修饰局部变量变量被称为静态局部变量,和全局变量,静态全局变量一样,是存储‘静态存储区’。存储 静态存储区 的变量,其内存直到 程序结束 才会被销毁。...所以,静态局部变量的生命周期是整个源程序,但,作用域是声明它的代码块内。 2、static修饰全局变量 当全局变量没有使用static修饰其存储静态存储区,直到程序结束才销毁。...我们可以使用extern关键字来引用这个全局变量。 当全局变量使用static修饰,其生命周期没有变,依旧是程序结束才销毁。但是其作用域变了。现在只限于申明它的这个文件才可见。

    1.8K30

    面试iOS 机会在自己手中

    属性所指的对象销毁,属性值会自动清空(nil)。 11. 用@property声明的 NSString / NSArray / NSDictionary 经常使用 copy 关键字,为什么?...、NSMutableDictionary,他们之间可能进行赋值操作(就是把可变的赋值给不可变的),为确保对象中的字符串值不会无意间变动,应该在设置新属性值拷贝一份。...当我们滚动的时候,也希望不调度,那就应该使用默认模式。但是,如果希望滚动,定时器也要回调,那就应该使用common mode。 15. NStimer准?谈谈你的看法?...类扩展不仅可以增加方法,还可以增加实例变量(或者属性),只是该实例变量默认是@private类型的(使用范围只能在自身类,而不是子类或其他地方),类扩展中声明的方法没被实现,编译器会报警,这是因为类扩展是在编译阶段被添加到类中的...继承中,子类可以使用父类的方法和变量,当子类想对本类或者父类的变量进行初始化,那么需要重写init()方法 。父类也可以访问子类的方法和成员变量 21.

    54151

    iOS 内存管理相关面试题

    自动释放池以栈的形式实现:当你创建一个新的自动释放池,它将被添加到栈顶。...程序运行结束之前销毁 事件处理结束以后,会销毁自动释放池 还有池子满的时候,也会销毁 2.9 自动释放池使用注意: 不要把大量循环操作放在释放池下,因为这会导致大量循环内的对象没有被回收,这种情况下应该手动写...当有多个线程需要访问到同一个数据,OC中,我们可以使用 @synchronized (变量)来对该变量进行加锁(加锁的目的常常是为了同步或保证原子操作)。...set方法中,retain了该对象,但是并没有配对释放 作为成员变量的对象,应该在那里配对释放?...需要通过代码管理内存) Block_copy(test); // 不需要使用block的时候, 应该做1次release操作 Block_release(test); [test release];

    1.5K30

    iOS应用开发:什么是ARC

    使用autorelease    对象代入时,先autorelease后再retain    对象函数中返回使用return [[object retain] autorelease]; 而使用...,那么希望释放是调用端,往往有下面的代码。...NSZone)         9.不能以new为开头给一个属性命名         10.声明outlet一般应当使用weak,除了对StoryBoard 这样nib中间的顶层对象要用strong...读写相关的属性 (readwrite, readonly) 读写相关的属性有 readwrite 和 readonly 两种,如果使用ARC之后,么需要注意一下 readonly 属性的使用。...@property (nonatomic, readonly) NSString *name;   一般声明为 readonly 的变量按理说应该不需要持有所有权了,但是ARC有效的情况下,将出现下面的错误信息

    1.1K60

    如何提高代码的可读性? - 读《编写可读代码的艺术》

    如何声明与使用变量 写程序的过程中我们会声明很多变量(成员变量临时变量),而我们要知道变量的声明与使用策略是会对代码的可读性造成影响的: 变量越多,越难跟踪它们的动向。...,但是有些变量的声明是毫无意义的,比如: 没有价值的临时变量 表示中间结果的变量 没有价值的临时变量 有些变量的声明完全是多此一举,它们的存在反而加大了阅读代码的成本: let now = datetime.datatime.now...(这段代码是JavaScript代码) 这个例子对于变量的命名还是比较合格的,但实际上这里所使用中间结果变量是完全不需要的,整个过程也不需要分两个步骤进行。...所以写代码的时候,如果可以“速战速决”,就尽量使用最快,最简洁的方式来实现目的。 缩小变量的作用域 变量的作用域越广,就越难追踪它,值也越难控制,所以我们应该让你的变量对尽量少的代码可见。...列对齐 声明一组变量的时候,由于每个变量名的长度不同,导致了变量名左侧对齐的情况下,等号以及右侧的内容没有对齐: NSString *name = userInfo[@"name"]; NSString

    1.1K10

    iOS---小经验分享

    1.字符串block中得赋值 定义一个全局变量,《字符串》当这个字符串用copy修饰的时候,然后再在block中赋值,当在block块之外访问,不能得到字符创的值。...block中修改局部变量的值 此变量需要用__block修饰 1.字符串block中得赋值 定义一个全局变量,《字符串》当这个字符串用copy修饰的时候,然后再在block中赋值,当在block块之外访问...^ { self.string = @"string"; }; NSLog(@"%@",self.string); block中修改局部变量的值 此变量需要用__block修饰...(@"%@",str); 2.xib--当一个视图是通过xib创建,且使用自动布局--autolayout,那么当把xib,添加到其他视图中得时候,会得到意想不到的结果。...,所以应该开个子线程modal出发短信的控制器。 还待补充。。。。

    62460

    如何正确使用const(常量),define(宏)

    前言 开发中,也许我们会经常使用到宏定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用宏定义与const修饰符。...本篇主要介绍开发中怎么正确使用const与define(宏定义) 当我们想定义全局共用的一些数据,比如通知名字,动画时长等等,我们可以用宏、常量、变量: 宏: // 注意后面不需要带符号...让来先将一下对它们之间的理解吧: 宏:只是预处理阶段进行文本替换,没有类型,不做任何类型检查,编译器可以对相同的字符串进行优化,只保存一份到数据段。...取的时候只需要给前面和中间的地址,如果是整型、浮点型会有多分拷贝,但这些数写在指令中,占的只是代码片段而且,大量使用宏会导致二进制文件变大。...结论:const右边的总不能被修改 所以我们一般定义一个常量又不想被修改,应该这样定义: NSString *const scottDidLoginSuccess = @"登陆成功"; 两者之间的区别

    2.3K70

    如何正确使用const(常量),define(宏)

    前言 开发中,也许我们会经常使用到宏定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用宏定义与const修饰符。...本篇主要介绍开发中怎么正确使用const与define(宏定义) 当我们想定义全局共用的一些数据,比如通知名字,动画时长等等,我们可以用宏、常量、变量: 宏: // 注意后面不需要带符号...让来先将一下对它们之间的理解吧: 宏:只是预处理阶段进行文本替换,没有类型,不做任何类型检查,编译器可以对相同的字符串进行优化,只保存一份到数据段。...取的时候只需要给前面和中间的地址,如果是整型、浮点型会有多分拷贝,但这些数写在指令中,占的只是代码片段而且,大量使用宏会导致二进制文件变大。...结论:const右边的总不能被修改 所以我们一般定义一个常量又不想被修改,应该这样定义: NSString *const scottDidLoginSuccess = @"登陆成功"; 两者之间的区别

    87020

    常用开发技巧系列(一)

    ;中间线 (字符串中间一条线)对应的值是一个NSNumber对象,默认值是NSUnderlineStyleNone NSString *const NSUnderlineStyleAttributeName...默认为 nil NSString *const NSVerticalGlyphFormAttributeName; 搭配上面的阴影使用效果更好 */ 五:侧滑手势     这里说一下,要是导航栏上...,当你push到下一个界面的时候,你要是使用的是系统的返回方式的话,那你的应用是自己会支持侧滑手势,你可以自己试一下 ,但在很多的情况下,我们的返回按钮是会自定义的。...,一个零行代码的三方库,你需要做的就是把它加到你的项目中间去就够了!...九:GCD写一个定时器其实很简单的     看下面代码的自动提示,直接敲上去你不需要再写太多了,但要注意你的在这里吧time写成全局变量或者dispatch_source_set_event_handler

    846101

    OC学习7——类别、扩展和协议

    1、调用NSLog()方法打印一个对象,实际上是调用了该对象的description方法,这个description方法就和Java中的toString()方法一样。...isEqual():该方法是NSObject类提供的一个实例方法,因此所有指针变量都可以调用这个方法来判断是否与其他指针变量相等。默认情况下,isEqual()的判断方法和==一样。...类的扩展中,可以额外增加实例变量,也可以用@property来合成属性,但是定义类别是则不允许定义成员变量,也不能用@property合成属性。...void) drive:(NSString *)name; 5 @end 6 7 //实际使用中,通用的做法是省略掉Vehicle_ext.h文件,而是将其中的内容直接添加在Vehicle.m...协议定义使用@protocol关键字,协议中还有两个关键字@optional and @required,@optional 声明的方法可以实现,也可以不实现。

    66960

    iOS设备唯一标识的前世今生

    设备唯一标识 ----       估计很多开发都有被要求过获取一下设备的唯一标识,获取设备的唯一标识经常使用在我们做统计或者是保证一台设备登录亦或者是做IM的时候可能会考虑去使用它,这一次自己的需求当中就有一个...你手机连接电脑的时候会弹出iTunes,通过它你就可以直观的看到一台设备的UDID,亦或者大家应该使用过“蒲公英”这个平台,要是你传到这个平台的ipa包要能安装在一台设备上的话就需要你在你自己的开发者证书当中添加到这台设备的...IDFA俗称广告ID,估计开发者里面提交用过应用的朋友都知道,最后提交的时候苹果会问你有没有使用广告ID,不知道现在该有没有处于懵逼状态不懂苹果为什么要问这个的同行,看了我们这个就会清楚了为什么会这么问呢...2、升级了系统这个标识会变?       3、重置了系统之后呢?这个标识会变?       4、既然是使用到了系统钥匙串的东西,那要是把手机越狱了,会有问题?      ...暂时应该是最科学的!

    3.4K60

    RunTime 之其他实践运用

    前言 有关Runtime的知识总结,本来想集中写成一篇文章的,但是最后发现实在是太长,而且不利于阅读,最后分成了如下几篇: RunTime 之使用前须知 RunTime 之常规操作 RunTime 之消息处理与消息转发...RunTime 之Method Swizzling RunTime 之其他实践运用 ---- 本文主要罗列项目实践中RunTime的综合使用: 实现NSCoding的自动归档和自动解档; 如果你实现过自定义模型数据持久化的过程...看以下代码,以Model为中心,而不是以dic中的数据为中心。...这块语言可能解释不太清楚,可以参考的demo,直接运行即可。...再使用KVC取出这个UITabBarButton对象,遍历出UITabBarSwappableImageView对象 得Xcode自带的UI视图调试神器 UIView *tabBarButton

    93830

    苏妈发布5nm新旗舰7900XTX,光提升50%

    这样看下来,不开光的条件下,40904K游戏实测、和理论性能跑分上,比6950XT的提升幅度60%-80%之间。...如果用6950XT做个中间变量,7900XTX的理论和游戏性能与老黄4090对比如何,各位应该心中有数,二者差个20%应该是有的。...不过,老黄的优势,比如上面这些「虚空对比」都是关了光的。虽然AMD的光说是这代提升了,但老黄也不是原地踏步。如果都开光的话,7000系想要「迎头赶上」估计不大可能。...Reddit高赞网友表示:「的预测太离谱了,以为新产品要1400美元。」 更有网友表示:「圣诞假期前发布一款不到一千美元的显卡,AMD,真有你的。」...微博博主「三三聊科技」称,苏妈发布的显卡物美价廉,价格不到4090的一半,这不是逼着老黄「腰斩」

    85440
    领券