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

NSString对象需要是alloc和init吗?

在iOS开发中,NSString对象不需要使用allocinit来创建。NSString是一个不可变的字符串类,可以直接使用字面量来创建一个NSString对象,例如:

代码语言:txt
复制
NSString *myString = @"Hello, World!";

如果需要创建一个可变的字符串,可以使用NSMutableString类,它需要使用allocinit来创建:

代码语言:txt
复制
NSMutableString *myMutableString = [[NSMutableString alloc] initWithString:@"Hello, World!"];

总结一下,NSString对象不需要使用allocinit来创建,而NSMutableString需要。

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

相关·内容

Objective-C中的继承多态

面向对象编程之所以成为主流的编程思想和他的继承多态是分不开的,只要是面向对象语言都支持继承多态,当然不同的OOP语言之间都有其特点。...+(id) alloc:  返回一个已经分配好的内存对象;  -(id) init: 对已经分配了内存的实例进行初始化; new同时调用了alloc init         demo:   Object... *object = [[Object alloc] init];         可以在子类中把alloc进行重写,然后观察运行情况 1 2 3 4 5 6 //重写alloc方法 +(id) alloc...{    NSLog(@"alloc函数被调用啦");     return [super alloc]; } 1 2 3 4 5 6 7 //重写init -(id) init {     NSLog...(@"init被调用了");     self = [super init];     return self; }         测试方法一个用allocinit实例化类,一个用new实例化类:

1.1K80

在Objective-C中浅谈面向对象

在现实生活中间接的作用的很大的,就连找个女朋友也要间接一下,如果间接好了你很有可能奥巴马成为好哥们不是,不是有种理论叫做六度人脉?程序中的间接的好处是什么呢?   ...学过设计模式的小伙伴都应该知道“模板方法模式”,我个人感觉便利构造器模板方法模式的作用挺相似的。   以下的东西是依附于代码来讲解的,编程,即使讲思想也少不了代码不是,话不多说,切入正题。...] init], 可以理解为Student类在NSObject类中继承了alloc方法, alloc这个方法是用来        实例化对象的 ​init 是默认的构造方法     ​    ​    ​    ​...alloc ] init ];   或者     ​    ​    ​    ​类名    ​*对象名 = [ 类名  new];     ​    ​  给对象的成员变量赋值调用对象的方法如下:...[super init]是为了初始化父类的成员变量,返回值为子类对象,如果返回nil,说明父类没有alloc成功,即不能在alloc子类对象。     ​    ​

1K60

NSCopyingNSCoding对象序列化反序列化基础详解你要知道的NSCopying、NSCoding协议及对象序列化反序列化都在这里

类型的对象,接下来使用copymutableCopy方法分别获取不可变副本对象可变副本对象,最后输出三者的地址,可以发现原对象不可变副本对象的地址一致,而可变对象的地址发生了变化。...第三组实验使用多态的方式创建了一个编译时类型为NSString而运行时为NSMutableString的对象,并获取可变不可变副本对象,输出地址发现三者的地址都不同了。...,如果要实现真正的深拷贝自行实现相关方法。...] initWithString:@"Jiaming Chen"]; Account *account = [[Account alloc] init];...,如果继承的不是NSObject类,而是继承其他自定义类,如果继承的父类没有实现NSCopying协议这里不能使用allocWithZone:方法来创建新的对象,而应该使用allocinit方法,如果继承的父类实现了

1.3K90

【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态

, 基础类型 0, 指针类型 nil; -- 初始化过程 : 执行 "OCPerson *p1 = [[OCPerson alloc] init]" 语句时 系统为 OCPerson 对象的成员变量分配内存空间...实例空间分配过程 创建对象语法 : [[类名 alloc] init] 语法, [类名 new] 语法, 每次创建对象都要调用该对象alloc 方法为对象分配内存空间; -- alloc 方法 :...alloc 方法 是在 NSObject 中定义的, 所有的 OC 对象都是 NSObject 的子类, 所有的类都可以调用 alloc 方法为所有的实例变量分配内存; -- init 方法 : 来自...nil; -- 注意 : 使用 [类名 init] 创建的对象也可以执行, 但是没有进行 init 初始化, 可能出现未知结果; 2...., 就不能再使用父类对象调用子类的方法属性, 此时需要将父类类型对象强制转换为子类类型对象; -- 类型转换方法 : "(类型名称 *) 对象名",  -- 将父类转为子类 : 这种强转只是改变指针变量的编译时类型

74710

iOS-ZFJRedisLib-超便捷的键值对存储方案,Sqlite数据模型存储库,APP缓存解决方案

前言 本人以前写过一个数据模型存储方法,是我在上上家公司做缓存框架的时候写的,具体也就是在FMDB的基础上封装,直接对数据模型进行存储操作,如下: 《iOS-基于FMDB的操作封装,模型对象的增删改查》...ZFJRedisLib 功能结构 ZFJRedisLib主要包含ZFJRedisZFJTable两部分,ZFJRedis主要是用于键值对存储,使用简单方便;ZFJTable主要是对于数据模型进行增删改查操作...// NSString [ZFJRedis zfj_setValue:@"zhangfujie1128222====" forKey:@"name"]; // 取值 NSString..._1 = [[ZFJModel alloc] init]; model_1.name = @"大白菜"; model_1.age = 88; model_1.gender = @...*model_4 = [[ZFJModel alloc] init]; model_4.name = @"大白菜"; model_4.age = 222; model_4.gender

50700

OC学习12——字符串、日期、日历

一、字符串 1、NSString代表字符序列不可变的字符串,即一旦NSString对象被创建,包含在这个对象中的字符序列就说不可改变的,直至这个对象被销毁。...它的功能主要是处理字符串,主要功能如下: 穿件字符串 读取文件或网络URL来初始化字符串 获取字符串长度 获取字符串中的字符或字节 连接字符串 分割字符串 查找字符串内指定的字符子串 替换字符串 比较字符串...,OC既提供了类方法来创建NSDate对象,也提供了大量以init开头的方法来初始化NSDate对象。...使用NSDateFormatter完成NSDateNSString之间的转换的步骤如下: 创建一个NSDateFormatter对象 调用NSDateFormatter的setDateStyle:、setTimeStyle...02"; 69 NSDateFormatter* df3 = [[NSDateFormatter alloc] init]; 70 // 根据日期字符串的格式设置格式模板

1.9K70

oc runtime

Person *p = [Person alloc]; p = [p init]; 可以写成 Person *p = objc_msgSend(objc_getClass("Person"), sel_registerName...("alloc")); p = objc_msgSend(p, @selector(init)); 获取一个类的所有方法(包括属性的getset的方法),必须导入库 #import <objc/runtime.h... *)name { // name保存到对应对象 // 动态添加属性 // object:给那个对象添加属性 // key:属性名 // value:把什么对象保存起来...self, @"name"); }  案例请查看uitextfiled扩展类修改placeholder的颜色 动态添加方法带参数  开发场景:如果一个类方法非常多,加载了到内存的时候也比较耗费资源,给每个方法生成映射表...; } @end #在viewController中 - (void)viewDidLoad {     [super viewDidLoad];     Person *p = [[Person alloc

53030
领券