1> initWithString
这个方法是以一个字符串初始化另一个字符串,在不可变字符串中代码很简单:
// 用一个 字符串创建对象
- (instancetype)initWithString:(SHString *)string
{
if (self = [self init])
{
// _string = malloc(sizeof(char) * [self sizeOfString:(char*)string]);
//
// strcpy((char*)_string, (const char*)string);
_string = [string str_ing_]; // 将_string指向 string中成员变量指向的地址
}
return self;
}
2> initWithUTF8String
用UTF8编码也就是C字符串初始化的方法
// 用一个c 字符串创建对象
- (instancetype)initWithUTF8String:(const char *)nullTerminatedCString
{
if (self = [self init])
{
_string = malloc(sizeof(char) * [self sizeOfString:nullTerminatedCString]);
strcpy((char*)_string, (const char*)nullTerminatedCString);
}
return self;
}其中的 sizeOfString是一个求字符串的字节数的"私有方法",就是遍历字符串
3> initWithFormat
这个方法是用格式化初始化,可以拼接字符串,功能和ssprintf差不多,但是还要可以拼接$("")字符串(因为OC中可以拼接@""), 由于这个方法要用到可变参数,代码比较多,而且暂只实现了字符(%c)的拼接,就不贴代码了
除了对象方法,还有对应的类方法,实现了对象方法,类方法就是一句代码,