objective-c(初始化)


创建对象
 (编程语言 Objective-C 2.0)

1.类对象与实例化

类的定义完成后,编译器在内存中自动生成唯一的类对象,实例对象都是通过调用类对象的类方法生成的。

类对象是工厂,同时也是蓝图,实例对象是产品

创建对象的基本步骤

使用 Objective-C创建对象需要两个基本步骤:

Allocation(内存分配)   :为新的对象动态分配一段内存地址

Initialization(初始化):为这段内存空间中填上合适的初始值

只有这两个步骤都完成后,这个对象才能够真正的开始行使功能

创建对象的基本步骤

两个步骤在代码中是分别完成的 但是通常我们将它们合起来一次完成:

id anObject = [[Rectangle alloc] init];

将创建对象的两个步骤分开使得我们可以对这两步过 程分别进行控制内存分配

2.初始化方法的返回值

Allocating Objective-C  NSObject 中,

提供了两个默认内存分配方法:

+alloc

+allocWithZone:isa

内存分配方法初始化了新对象的

变量,并将其它所 内存分配方法不应该被复写或进行改动

有变量的值都置为初始化方法的返回值

通常情况下,初始化方法对接收方对象的实例变量进 行初始化,然后将对象本身返回

初始化方法的主要职责是要保证它返回的对象在使用 时不会出现错误初始化方法的返回值

但有时,初始化方法无法正常执行它被要求执行的功 能

1:文件访问错误 有时,初始化方法返回的对象并不是接收者对象本身

2:对象重名

基于上述原因,程序应当使用由初始化方法返回的对 象,而不是直接使用由内存分配方法返回的对象

下面的代码是非常危险的,因为它完全忽视了初始化方法的返回值状态:isa

id anObject = [SomeClass alloc];

[anObject init];

[anObject someOtherMessage];

为了安全地初始化新对象,应该把内存分配方法和初 始化方法结合起来使用:

id anObject = [[SomeClass alloc] init];

[anObject someOtherMessage];

如果初始化方法有可能返回nil,则还需要做检查处

理:

id anObject = [[SomeClass alloc] init];

if ( anObject )

[anObject someOtherMessage];

else ...

3.初始化方法的实现

当新对象被创建伊始,除了它的

变量外,它在内存中的所有位都被置

有时,这样的初始化对于一个对象来说就够用了

但绝大多数的时候,还需要对对象的其它变量赋予初 始值才能保证它能够开始被使用

在这些情况下,需要实现自定义初始化

 

objective-c(初始化)相关推荐

  1. 机器学习调参自动优化方法

    本文旨在介绍当前被大家广为所知的超参自动优化方法,像网格搜索.随机搜索.贝叶斯优化和Hyperband,并附有相关的样例代码供大家学习. 一.网格搜索(Grid Search) 网格搜索是暴力搜索,在 ...

  2. 网络爬虫学习(三)-scrapy框架

    目录 一  Scrapy框架简介 二  scrapy框架的基本使用 1) 环境的安装 2)基础命令 3)项目组成: 4)创建爬虫文件: 5)scrapy架构组成 6) 五大核心组件 7)srapy工作 ...

  3. Objective c类的初始化

    Objective c中实现类的初始化要先重载父类的init方法: 1.首先调用[super init]使用父类的方法进行初始化.将对象赋给self 2.假设self不为nil即父类初始化成功,接着进 ...

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

    一. Objective-C 方法详解 1. 方法属性 (1) OC 方法传参机制 Object-C 方法传参机制 : OC 中得参数传递都是值传递, 传入参数的是参数的副本; -- 基本类型 (值传 ...

  5. iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象...

    1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较 ...

  6. 【iOS 开发】Objective-C 运算符

    博客地址 : http://blog.csdn.net/shulianghan/article/details/41624613 参考文章 : 1.[iOS 开发]Object-C 运算符 2.[iO ...

  7. Paper:Xavier参数初始化之《Understanding the difficulty of training deep feedforward neural networks》的翻译与解读

    Paper:Xavier参数初始化之<Understanding the difficulty of training deep feedforward neural networks>的 ...

  8. 【数据竞赛】Kaggle GM秘技:树模型初始化技巧

    作者:  尘沙樱落 树模型初始化技巧 大家都知道神经网络训练的提升分数的技巧之一就是: 依据验证集合的效果,来调整learning rate的大小,从而获得更好的效果; 但我们在训练树模型的时候却往往 ...

  9. xavier初始化_深入解读xavier初始化(附源码)

    论文是Understanding the difficulty of training deep feedforward neural networks. 一篇感觉不错的翻译为[Deep Learni ...

  10. IOS学习笔记——Objective-c基础(一)

    2019独角兽企业重金招聘Python工程师标准>>> 最近自学ios,ios的支持语言是Objective-c,所以要学习ios就需要先学习Objective-c语言.当掌握了Ob ...

最新文章

  1. Tungsten Fabric SDN — 网络协议
  2. Windows系统安装改磁盘格式
  3. 虎扑签约神策数据,媒体 + 电商数据新玩法
  4. 高性能的序列化与反序列化:kryo的简单使用
  5. 打破情感分类准确率 80 分天花板!更加充分的知识图谱结合范式
  6. c ++向量库_将向量复制到C ++中的另一个向量
  7. 飞鸽传书从天齐庙南门出来
  8. 商务部部长助理黄海:中国服务外包产业发展势头良好
  9. python中列表是什么类型_Python数据类型之列表
  10. 旋转图像 leetcode
  11. c语言编程图形并颜色,C语言图形编程(三、绘图函数1)
  12. [bzoj1226]学校食堂Dining
  13. 【P04】运放全差分放大器实现单端与平衡的相互转换
  14. [案例2-5]石头 剪刀 布小游戏
  15. NAS中的文件共享协议
  16. c语言——常见占位符(格式说明)
  17. AssetBundle.Unload(false/true)
  18. meshgrid()函数
  19. sothink swf decompiler反编译的常见错误
  20. resharper激活

热门文章

  1. ubuntu 15.04 下的 nvidia(待续)
  2. 讨厌麻烦的ora 01722无效数字
  3. Lua开发学习4-普通循环和迭代器循环
  4. 689D Magic Odd Square 奇数幻方
  5. 第二周进度及工作量统计
  6. python day5--正则表达式
  7. 58.贪心算法练习:  最小新整数
  8. SQL Server 2008安装配置说明书+简单使用 亲测可用
  9. javaScript第六天(1)
  10. 关于a标签的href属性的注意事项