iOS开发init方法解析

自定义的init方法,都必须调用父类的init方法。

一般情况下为:

- (id)init

{

[super init];

xxx = xxx;

}

通常情况下,这种模式可以满足绝大多数的需求,但是在少量情况下,需要一些特殊处理。

1,出于优化的考虑,init方法会释放已经分配了内存的对象,然后创建另一个新对象并返回之。

2,init方法在执行过程中发生了错误,所以会释放对象并返回nil。

对于1,苹果官网的做法是将父类init方法的返回值给self,对于2,苹果官网的做法是检测父类返回的对象是否为nil,为nil则不需要继续进行。

所以,苹果推荐的init自定义方法是:

- (id)init

{

self = [super init];

if(self)

{

xxx = xxx;

}

return self;

}

init中,可以直接进行赋值,也可以使用存取方法。

偏好直接赋值的人认为:对象只有执行完init之后,才能完成初始化。

偏好使用存取方法的人认为:存取方法除了能为实例变量赋值之外,还能做其他的事情。只要是设置实例变量,都可以使用存取方法。

时间: 2024-10-13 10:27:48

iOS开发init方法解析的相关文章

【IOS】IOS开发问题解决方法索引(一)

IOS开发问题解决方法索引(一) 1       Xcode工程调试时无法命中断点的问题 若没有勾选LLVM Compiler 1.6 –> CodeGeneration –> Generate Debug Symbols 一项,则程序调试时无法命中断点. 2       Xcode调试时查看变量的几种方法 Xcode如何查看内存中的数据 http://blog.csdn.net/evgd2288/article/details/8995779 Xcode的Debug中查看数据细节的方法 ht

【IOS】IOS开发问题解决方法索引(二)

IOS开发问题解决方法索引(二) 1       不使用ARC编译,-fno-objc-arc ios5 选择了ARC但是不使用ARC编译,-fno-objc-arc http://leobluewing.iteye.com/blog/1384797 http://blog.cnrainbird.com/index.php/2012/03/13/object-c_kai_fa_zhong_hun_he_shi_yong_huo_bu_shi_yong_arc/ 2       SIGABRT错误

【IOS】IOS开发问题解决方法索引(三)

1       判断js对象是否拥有某属性 http://www.cnblogs.com/snandy/archive/2011/03/04/1970162.html 两种方式,但稍有区别 1,in运算符 1 2 3 var obj = {name:'jack'}; alert('name' in obj); // --> true alert('toString' in obj); // --> true 可看到无论是name,还是原形链上的toString,都能检测到返回true. 2,h

【IOS】IOS开发问题解决方法索引(五)

1      Block教程系列 发布者:Seven's - 2013/04/22 - 分类:梦印象 ios开发block的使用指南,以及深入理解block的内存管理,也适用于osx开发. 讨论范围:block的使用,内存管理,内部实现. 不包含的内容:gc arc下的block内存,block在c++中的使用. Block介绍(一)基础 Block介绍(二)内存管理与其他特性 block介绍(三)揭开神秘面纱(上) block介绍(四)揭开神秘面纱(下) 2      iOS开发 git gi

【IOS】IOS开发问题解决方法索引(六)

1       [Network]使用AFNetworking2.0请求数据时出现错误Requestfailed:unacceptablecontent-type:text/html解决方法 使用AFNetworking 2.0 请求数据时出现错误 Request failed: unacceptablecontent-type: text/html 解决方法 添加一行 manager.responseSerializer.acceptableContentTypes= [NSSet setWi

IOS中init方法都做了什么事?

一.概述 在初始化使用init方法初始化时,会将以init开头的初始化方法,按顺序调用一遍.比如以下几个方法: 1 initWithFrame: 2 initWithNibName: 3 initWithStyle: PS:注意,在自定义Cell时,使用register注册一个Cell时,仅调用initWithStyle:方法.

ios开发中类方法与self的注意点 与实例方法区别

Objective-C里面既有实例方法也类方法.类方法(Class Method) 有时被称为工厂方法(Factory Method)或者方便方法(Convenience method).工厂方法的称谓明显和一般意义上的工厂方法不同,从本质上来说,类方法可以独立于对象而执行,所以在其他的语言里面类方法有的时候被称为静态方法. 注意点一:类方法 1,类方法可以调用类方法. 2,类方法不可以调用实例方法,但是类方法可以通过创建对象来访问实例方法. 3,类方法不可以使用实例变量.类方法可以使用self

iOS开发-使用NSJSONSerialization解析JSON数据

1.JSON数据结构和解析 1.1JSON数据结构 JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. JSON 值可以是: 数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true 或 false) 数组(在方括号中) 对象(在花括号中) null JSON 对象在花括号中书写: 对象可以包含多个名称/值对:名称和值中间使用“:”隔开,类似O

【IOS】IOS开发问题解决方法索引(四)

1       IOSNSTimer线程无法在委托方法之外停止 NSTimer无法在线程的委托方法之外停止. 2       在IOS4.3中添加AdSupport.framework会引起dyld 'dyld_fatal_error 将库引用参数设置为可选即可解决. 3       Failed to get the task for process xxx 证书问题,project与target的调试证书都必须是开发者证书,ADHOC的证书会出现此问题. 4       IOS NSInvo