【Objective_C学习笔记】alloc-init 与new的区别

  在一些源码中看到有人用[classname new]创建和初始化对象,但是我们大多数都用[[classname alloc] init],所以就很好奇两者之间的区别,通过查看一些资料

得出的结论是:

  1. [classname new]  = [[classname alloc] init];
  2. new使用的是默认的init方法,不太灵活,若使用alloc-init格式可调用自定义的初始化方法,带参或者不带参,灵活性较大;
  3. alloc-init显示调用初始化方法,而new隐示调用初始化方法;

综上所述,我觉得,若用默认的init方法,完全可以用[classname new] 创建和初始化对象简化代码;若要调用自定义的初始化方法,那还是用alloc-init吧,当然这还是随大家自己的使用习惯。

时间: 2024-12-21 21:49:26

【Objective_C学习笔记】alloc-init 与new的区别的相关文章

Swift学习笔记一:与OC的区别

在 Swift 中没有了 main.m,@UIApplicationMain 是程序入口 在 Swift 中只有 .swift 文件,没有 .h/.m 文件的区分 在 Swift 中,一个类就是用一对 {} 括起的,没有 @implementation 和 @end  1. 方法调用  OC      [[UIView alloc] initWithXXX:]  Swift   UIView(XXX: )    UIView() 类名()    ==  alloc / init 2. 类方法  

【Objective_C学习笔记】Debug表达方式

经常在源码中看到类似于如此定义debug模式 #if DEBUG #define NSLog(FORMAT, ...) fprintf(stderr,"\nfunction:%s line:%d\n%s\n", __FUNCTION__, __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]); #else #define NSLog(FORMAT, ...) nil #endif 其中对那些_

我的学习笔记:get post请求的区别

1.如果是post方式进行请求,那么表单中的数据会放在请求报文体中,发送到服务端.如果以get方式进行请求,那么表单中的数据会放在URL地址栏中发送到服务端.(注意,表单元素必须有name属性) 2.在服务端接收方式 不一样,如果是post请求用request.Form,get请求用request.QueryString. 3.Post请求比get请求安全.所以像注册,登录等表单都要用post提交. 4.Post请求发送的数据要比get请求大,大的文件上传或下载用post. 注意:只能将表单元素

SQL学习笔记——临时表不同创建方式的区别

问题:在存储过程中使用临时表时,不Create临时表就会报错. 分析了下,总结了临时表创建方式的区别. 创建临时表有两种方法: 方法一 create  table  #临时表名 ( 字段1 约束条件,      字段2 约束条件,      -- ) create  table  ##临时表名 ( 字段1 约束条件,      字段2 约束条件,      -- ) 方法二 select  *  into  #临时表名  from 你的表;   select  *  into  ##临时表名  

jQuery学习笔记:attr()与prop()的区别

先看看官方文档是如何解释两者之间功能差异的: attr() Get the value of an attribute for the first element in the set of matched elements or set one or more attributes for every matched element. 获取匹配的元素集合中第一个元素的attribute,或者为每个选定的元素添加一个至多个attribute prop() Get the value of a p

PHP学习笔记之issert和empty的区别

一:PHP中 issert和empty的区别: isset查看一个变量是否已经被设置并且不为空(Determine if a variable is set and is not NULL) empty查看一个变量是否为空 "".0."0".NULL.FALSE.array().$var($var是一个没有赋值的变量) 另外需要注意的是从PHP5.5开始,empty()只能支持变量,其他任何东西传递进来都将会导致介解析错误. 换句话说,像下面的这个表达式将不再凑效e

学习笔记:逻辑运算符也有优先级区别

不尝试还真不知道,居然是因为优先级的差别导致,如果是真实编程中遇到,排错就很困难了,幸亏这里看到了: $a = true;             //声明一个布尔型变量$a,赋值为真 $b = true;             //声明一个布尔型变量$b,赋值为真 $c = false;            //声明一个初值为假的布尔型变量$c   if($a or $b and $c){      //用or做判断     echo "真"; }else{     echo &

Java课程学习笔记 — JUnit accuracy/failure/stress test区别

accuracy test(结果准确性测试) 例如,Assert.assertEquals(expected, actual). 如果结果不符合期望则产生failure.说明程序逻辑有问题. failure test(抛出异常测试) expected属性用来指示期望抛出的异常类型.例如,@Test(expected = IllegalArgumentException.class). 如果结果不符合期望则产生failure.说明程序逻辑有问题. stress test(运行时间测试) timeo

学习笔记day5:inline inline-block block区别

1. block元素可以包含block元素和inline元素:但inline元素只能包含inline元素.要注意的是这个是个大概的说法,每个特定的元素能包含的元素也是特定的,所以具体到个别元素上,这条规律是不适用的.比如 P 元素,只能包含inline元素,而不能包含block元素. 2.默认情况下,block元素宽度自动填满其父元素宽度. 3.inline元素不会独占一行,其宽度随元素的内容而变化,inline元素设置width,height属性无效.inline元素的margin和paddi