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

使用alloc init而不是new

在C++中,alloc initnew都可以用于内存分配和对象初始化,但它们之间存在一些差异。

new是C++中的运算符,它会自动调用operator new函数来分配内存,然后调用对象的构造函数来初始化对象。new运算符返回一个指向新分配和初始化的对象的指针。

alloc init是Objective-C中的方法,它用于分配和初始化对象。alloc init分为两步:首先,alloc方法会分配内存,然后init方法会在分配的内存上调用构造函数来初始化对象。

在大多数情况下,使用alloc initnew都可以正确地分配和初始化对象。但是,alloc init只能用于Objective-C对象,而new只能用于C++对象。

总之,如果您正在使用Objective-C,则应使用alloc init来分配和初始化对象。如果您正在使用C++,则应使用new运算符来分配和初始化对象。

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

相关·内容

  • iOS 设计模式之工厂模式

    创建对象的时候,我们通常是alloc一个对象,假设须要创建100个这种对象,假设是在一个for循环中还好说,直接一句alloc即可了,可是事实并不那么如意,我们可能会在不同的地方去创建这个对象,那么我们可能须要写100句alloc 了,可是假设我们在创建对象的时候。须要在这些对象创建完之后,为它的一个属性加入一个固定的值。例如说都是某某学校的学生,那么可能有须要多些100行反复的代码了。那么,假设写一个-(void)createObj方法,把创建对象和学校属性写在这种方法里边。那么就是会省事非常多,也就是说我们能够alloc 创建对象封装到一个方法里边,直接调用这种方法就能够了,这就是简单工厂方法

    02

    oc深坑測试题及其答案[通俗易懂]

    一、选择题(共80题,每题1分) 1、 不会立马使引用计数器改变的是: 答案:(C) A、release B、alloc C、autorelease D、retain 2、 在OC中类的接口声明keyword为: 答案:(B) A、@import B、@interface C、@implemention D、@protocol 3、 NSString *name = [[NSString alloc]initWithString:@”张三”];NSLog(@”%d”,[name retainCount]);上述代码打印结果是: 答案:(A) A、-1 B、0 C、1 D、2 4、 下列选项中所有属于对象的是: 答案:(C) A、我的白色iPhone4s;Mac Mini B、狗;老虎 C、邻居家的猫咪“贝贝”;我的弟弟“张三” D、保时捷;犀利哥 5、 NSDictionary *dict = [NSDictionary dictionaryWithObject:@”a value” forKey:@”aKey”];NSLog(@”%@”,[dict objectForKey:@”aKey”]);[dict release];控制台中打印的最后一条信息会是: 答案:(C) A、a value B、aKey : a value C、崩溃信息 D、a value : aKey 6、 现有例如以下集合,能准确删除“张三”的代码是:NSMutableDictionary * peoples=[NSMutableDictionary dictionaryWithObjectsAndKeys:@”张三”,@”左护法”,@”李四”,@”右使”,@”唐sir”,@”老大哥”, nil]; 答案:(A) A、[peoples removeObjectForKey:@”左护法”]; B、[peoples removeObject:@”张三”]; C、[peoples removeObjectAtIndex:0]; D、[peoples removeAllObjects]; 7、 关于类和对象的概念,下列属于对象的是: 答案:(C) A、奥迪A6 B、保龄球 C、世界冠军刘翔 D、西红柿 8、 下面说法不对的是: 答案:(A) A、nonatomic:提供多线程保护,提高性能,在没有使用多线程的编程中能够选择使用。 B、assign:属性默认值。说明设置器直接进行赋值。针对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char)等等。

    03
    领券