替换NSString类中的stringWithFormat:方法

简介:

替换NSString类中的stringWithFormat:方法

先给出源码:

YXUseful.h

//
//  YXUseful.h
//  NSString
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import <Foundation/Foundation.h>

NSString * String(NSString *format, ...);

YXUseful.m
//
//  YXUseful.m
//  NSString
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import "YXUseful.h"

NSString * String(NSString *format, ...)
{
    va_list ap;
    va_start (ap, format);
    
    NSString *body = [[NSString alloc] initWithFormat:format arguments:ap];
    
    va_end (ap);
    
    return body;
}

使用情况:

从上图就能看出,String明显要比下面的方式简单了不少,对吧:)

从实现的角度上来看,是下面的方式(你绝对没有见过可以带多个参数的这种呢)

"..." 这个不定参数列表也许你是第一次见到:)

当然也有弊端:

 

总结:

其实,实现起来并不容易,如果从来没有接触过,是绝对写不出来的,因为,你永远也不会知道需要va_start,va_end才能够正常使用:)

目录
相关文章
|
3月前
|
C++ 容器
【c++】string类的模拟实现--2
【c++】string类的模拟实现--2
|
5月前
|
存储 监控
2.4 CE修改器:代码替换功能
代码替换功能,需要使用 Cheat Engine 工具的“代码查找”功能,来查找游戏数据存储在内存中的地址。首先找到当前数值的存储地址,并将其添加到下方地址列表中。然后右键单击该地址,并选择“找出是什么改写了这个地址”,将弹出一个空白窗口。接着,点击本教程窗口上的“改变数值”按钮,并返回 Cheat Engine,如果操作没有问题,在空白窗口中将出现一些汇编代码。选中代码并点击“替换”按钮,将其替换为什么也不做的代码(空指令),同时,修改后的代码也将放置在“高级选项”的代码列表中保存。点击“停止”,游戏将以正常方式继续运行,关闭窗口。现在,再次点击教程窗口上的“改变数值”,如果锁定速度足够快,
83 0
2.4 CE修改器:代码替换功能
|
存储 安全 前端开发
Go-字符和字符串类型详解(原始字符串、拼接、修改、比较、拆分、查找等)
Go-字符和字符串类型详解(原始字符串、拼接、修改、比较、拆分、查找等)
117 0
Go-字符和字符串类型详解(原始字符串、拼接、修改、比较、拆分、查找等)
|
C++
【C++】定义自己的String类
【C++】定义自己的String类
199 0
Sting str = "aaaa" 的形式定义一个字符串最大长度只能有 65534 个。
String对象最多能容纳字符 最长的长度为 2^32,也就是4G。 不过,我们在编写源代码的时候,如果使用 Sting str = "aaaa";的形式定义一个字符串,那么双引号里面的ASCII字符最多只能有 65534 个。
1210 0
|
C++ 编译器 Windows
C++模板参数替换的理解
还是邓俊辉老师数据结构中List那一章的例子。List的遍历问题。 main.cpp里调用PRINT ( La ); // La是一个自定义的List对象 PRINT这个宏的定义就在main.cpp里#define PRINT(x) { print(x); crc(x); checkOrder(x); } print的声明在UniPrint/print.
4970 0
|
数据采集 Python
使用正则表达式替换构造字典
  写爬虫时获取网页的请求头时,拿到的数据往往不是字典类型,我们可以使用 Pycharm 的正则表达式替换功能,替换为字典类型。  
983 0