NSString的创建方法(二)

上一篇文章我们已经讲解过关于NSString的前三种创建方法, 现在我们来讲另外三种创建的方法, 这三种方法也叫做创建临时字符串.

这三种方法分别就是:

stringWithUTF8String:将一个C类型的字符串转换成一个OC的字符串, 和前面提到的initWithUTF8String有些类似, 但是不同的是, 它不使用alloc来创建.

stringWithFormat:将一个已经初始化的字符串和一些自定义参数返回给字符串对象, 和initWithFormat类似, 但它也不使用alloc来创建.

stringWithString:将一个已有的a字符串对象复制返回给b字符串对象, 和initWithString类似, 同样不实用alloc来创建.

为什么说这三种方法是临时创建的呢?

那是因为, 这三种方法不使用alloc initnew来创建, 所以他们的引用计数释放不需要由我们来释放, 和自动释放引用计数类似, 一旦使用完之后就会自动释放.

下面是这三种方法的简单使用例子:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *str = [NSString stringWithUTF8String:"Hello, World"];
        //将C字符串转换成OC的字符串对象

        NSString *str2 = [NSString stringWithFormat:@"%d %@ %c", 1, @"Hello", ‘R‘];
        //使用格式符创建一个临时字符串对象

        NSString *str3 = [NSString stringWithString:str];
        //使用一个字符串, 创建另一个字符串.

        //PS:使用stringwith创建的字符串对象, 都是属于自动释放字符串对象,所以不需要写release释放.

/*
注意:字符串从刚开始创建, 无论是使用什么方法, 都是Helloc, World!, 永远不会改变.
*/

        NSLog(@"\nstr = %@\nstr = %p", str, str);
        NSLog(@"\nstr2 = %@\nstr2 = %p", str2, str2);
        NSLog(@"\nstr3 = %@\nstr3 = %p", str3, str3);

    }
    return 0;
}

下面是输出的结果:

2014-10-11 09:38:08.821 TemporaryNSString[556:303]
str = Hello, World
str = 0x100200be0
2014-10-11 09:38:08.823 TemporaryNSString[556:303]
str2 = 1 Hello R
str2 = 0x100204310
2014-10-11 09:38:08.823 TemporaryNSString[556:303]
str3 = Hello, World
str3 = 0x100200be0
Program ended with exit code: 0
时间: 2024-10-17 10:54:27

NSString的创建方法(二)的相关文章

NSString的创建方法(一)

NSString是OC里的三大基本数据结构之一, 也是我们经常使用的数据结构, 关于NSString的使用有好几种方法, 这里只讲解前三种创建和简单使用的方法. 除了直接使用NSString *str = @"Hello, World!"这种普通直接的创建方法, 还有使用下面的三种方法. 第一种: initWithString: 通过复制一个已有的a字符串, 并且返回给第二个b字符串对象, 所以它们的内容和地址是完全一模一样的, 这个和copy的方法有些类似. 第二种: initWit

三.OC基础--1.NSString的创建和使用,2多文件开发,3类方法,4封装

三:OC--1.NSString的创建和使用, 1,创建常量字符串,注意使用“@“符号. NSString *astring = @"This is a String!"; //后面的是常量,前面的是指针变量 2,NSString *s1 = [NSString new];//没有意义 s1 [email protected]"jian le ma"; 3.创建字符串的第三种方法 // 格式化创建字符串(按照指定的格式创建字符串) NSString *imgName

获得执行计划方法二-explain plan

1 安装 $ORACLE_HOME/rdbms/admin/utlxplan.sql (UNIX)  脚本生成一个表这个程序会创建一个名为plan_table的表 2 运行 explain PLAN [ SET STATEMENT_ID [=] < string literal > ] [ INTO < table_name > ] FOR < sql_statement > 其中: STATEMENT_ID:是一个唯一的字符串,把当前执行计划与存储在同一PLAN中的其

Javascript 正确使用方法 二

好的,废话不多说,接着上篇来. 变量(variables) 始终使用 var 关键字来定义变量,如果不这样将会导致 变量全局化,造成污染. //bad superPower = new SuperPower(); //good var superPower = new SuperPower(); 使用 一个 var关键字来定义多个变量...并且每个变量一行.. // bad var items = getItems(); var goSportsTeam = true; var dragonba

交换分区的创建方法

cat /proc/swaps   查看交换分区 在交换分区内存不够的时候,我们一般情况下回创建交换分区有以下两种方法. 方法一:创建一个分区制作交换分区 创建分区:地址  http://www.cnblogs.com/l75790/p/6883775.html  . 格式化分成交换分区:mkswap /dev/sda6 激活交换分区:swapon /dev/sda6 关闭交换分区:swapoff /dev/sda6 注意:如果系统重启的话该方法制作的交换分区就不存在了. 在制作好了交换分区之后

多台linux无密码访问之方法二

一:实验环境同"多台linux无密码访问之方法一" 二:配置过程 前3步同"多台linux无密码访问之方法一" ★第四步不同于方法一 4.在.ssh目录下创建一个名为config的文件并设置正确权限 manager:~/.ssh # touch config manager:~/.ssh # cat config StrictHostKeyChecking no UserKnownHostsFile /dev/null manager:~/.ssh # chmod

Win32 多线程的创建方法,区别和联系

Win32多线程的创建方法主要有: CreateThread() _beginthread()&&_beginthreadex() AfxBeginThread() CWinThread类 一.简介 CreateThread: Win32提供的创建线程的最基础的API,用于在主线程上创建一个线程.返回一个HANDLE句柄(内核对象).在内核对象使用完毕后,一般需要关闭,使用CloseHandle()函数. _beginthread()&&_beginthreadex():_

【JOB】Oracle中JOB的创建方法以及一个细节的探究

在Oracle中可以使用JOB来实现一些任务的自动化执行,类似于UNIX操作系统crontab命令的功能.简单演示一下,供参考. 1.创建表T,包含一个X字段,定义为日期类型,方便后面的定时任务测试.[email protected]ora10g> create table t (x date); Table created. 2.创建存储过程p_insert_into_t,每次执行该存储过程都会向T表中插入一条系统当前时间.[email protected]ora10g> create or

Django 项目创建方法

以下为创建django创建方法步骤: 一.安装django模块 pip3 install Django 二.创建django项目 (1)通过命令方式创建 django-admin startproject mystie (2)通过pycharm创建 新建django项目 三.文件说明 1.setting.py 配置文件 2.urls.py 路由系统 3.wsgi.py 4.manage.py 启动文件 四.创建app(其中一个项目的名字,例如cmdb) python3 manage.py sta