objective-C学习笔记(七) 字符串处理
字符串NSString
NSString 是一个Unicode编码,16位字符的字符序列。
NSString 是一个类,拷贝时需要注意。
初始化方法:字面量初始化、初始化器、工厂方法。
NSString 拥有恒定性,所有的操作无法更改本身,如有更改,都是返回新值的形式。
NSString共享机制,在字符串内容相同的时候,不同的字符串指针指向同一个地址。(字面常量初始化的情况)
NSMutableString 可变性String
NSMutableString是NSString的子类
NSMutableString不具有共享机制
NSMutableString并不是在原有内存上直接增长,而是重新分配一个更大或更小的缓存容量存放字符。
NSMutableString的缓存容量与增长
字符串初始化时,可以手动分配一个缓存容量capacity[NSMutableString stringWithCapacity:100]
当字符串增长时,如果实际需求大于capacity,capacity就会以二倍的方式指数增长:
分配新的堆内存 2*capacity
将原来堆内存上的内容拷贝到新内存
释放原来的堆内存。
最佳实践:估计号capacity,预先分配好一定容量,避免以后capacity的增长(增长的代价太大)
常用操作:
NSString:
访问字符串: 获取字符串字符、字符串长度、字面量、大小写转换。
查询字符串: 定位子串、获取子串、是否包含子串、查询字符集。
其他操作:比较字符串、替换字符串、分解字符串。
NSMutableString:
添加字符串、删除字符串、修改字符串
建议:去面试之前,可以整理归纳一下常用的这些字符串操作以及常用的各种OBJC函数。
objective-C学习笔记(七) 字符串处理的更多相关文章
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Linux学习笔记(七) 查询系统
1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- python3.4学习笔记(七) 学习网站博客推荐
python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...
- Go语言学习笔记七: 函数
Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...
- iOS 学习笔记七 【博爱手把手教你使用2016年gitHub Mac客户端】
iOS 学习笔记七 [博爱手把手教你使用gitHub客户端] 第一步:首先下载git客户端 链接:https://desktop.github.com 第二步:fork 大神的代码[这里以我的代码为例 ...
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...
- 【学习笔记】字符串—马拉车(Manacher)
[学习笔记]字符串-马拉车(Manacher) 一:[前言] 马拉车用于求解连续回文子串问题,效率极高. 其核心思想与 \(kmp\) 类似:继承. --引自 \(yyx\) 学姐 二:[算法原理] ...
随机推荐
- TFS Build Definition
1. TFS Build 简介 在团队项目开发中,编译常常是一个很困难的事情! 可能你会反问编译有什么难的?不就是右键,然后点击 Build/Rebuild, 或者直接按 F5 么?这都不会,真不知 ...
- hdu4288 Coder
Coder Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...
- Unix/Linux环境C编程入门教程(6) 安装Fedora C/C++开发环境
安装Fedora C/C++开发环境 1 Fedora 是一个开放的.创新的.前瞻性的操作系统和平台,基于 Linux. 2.选择自定义配置 3.设置版本为10.0 4.选择稍后安装 5.选择64位 ...
- C++赋值运算符、函数调用运算符、下标运算符(“=”、“()”、“[]”)重载
#include <iostream>#include <assert.h>#include <string.h> using namespace std; cla ...
- Day01
1.@Test函数,执行后控制台没有输出结果? 1) 不能用静态方法,控制台会没有结果. 2) 不能把类名命名为Test,@Test不识别. 2.遍历Map集合的entrySet方法不会? 3.使 ...
- 引入css ,使用@import和link的方式
我们也经常听到有人说要使用link来引入CSS更好,但是你知道为什么吗? 继续往下看 linklink就是把外部CSS与网页连接起来. @importimport文字上与link的区别就是它可以把在一 ...
- JavaSE思维导图(四)
- android入门——UI(4)
GridView控件实现菜单 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xml ...
- HTML5实现图片选择并预览
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...
- IOS开发——正则表达式验证手机号、密码
App的实际应用中,用户登陆功能基本是每个App都有需求的一个功能.而当前我们很常规的做法,就是让用户把手机号作为自己的用户名,而在注册获取短信验证码的过程中,我们首先要完成的一个步骤,就是校验用户的 ...