光有新学IOS的朋友问我为什么要 [[*** alloc]init],今天就专门来说一下一个类的“生命周期”~~~.
要使用某个类的对象呢,当然首先必须先得到一个指向该对象的变量。
例如:
Class *classInstance;
在oc中,这个变量的变量名就是classInstance了,类型就是指针,指向某个Class类的实例。
但是,这只是声明的代码,而不是创建了Class实例。
一个对象的生命周期是从创建开始,然后接受消息,最后在不需要的时候呗释放掉。
而怎么创建对象呢? 我们通过向类发送alloc消息,就可以创建对象了。一个类收到了alloc消息后,就会在内存中创建对象,并且返回一个指向新对象的指针,我们可以把指针保存在某个变量里。
例如:
Class *classInstance = [Class alloc];
这样就创建了一个Class类的实例,并且将返回的对象指针赋给了classInstance变量。这样我们就得到一个指向某个实例的指针,就能向它发送消息了。
但是,这样我们就能使用了吗?当然不是了。虽然向类发送alloc消息能够创建实例,但是在没有完成初始化之前,新创建的实例是无效的。所以对新创建的实例,必须先向它发送一个初始化消息。
即:
[classInstance init];
而init返回的也是指针,和alloc消息一样,都指向新创建的对象,所以我们可以嵌套消息发送,先让其收到alloc消息创建对象,然后再收到init消息完成初始化。
即:
Class *classInstance [[Class alloc] init];
正如开头所说的,完成了一个类的创建。
而释放对象代码就比较简单了,(实际很复杂,着就不多说了 - -)
classInstance = nil ;
nil是值为0的指针,即java中的null,C里的NULL。一般表示不指向任何对象。
好吧,今天简单的稍微说到这里。
最近真忙,忙着减肥。。。唉。
分享到:
相关推荐
书中会介绍UIViewController的生命周期、Storyboard和XIB的使用、Auto Layout和Size Classes,以及如何响应用户输入。 网络功能是现代应用不可或缺的一部分,iOS提供了URLSession等API进行网络通信。书中会讲解如何...
- UIViewController:视图控制器的生命周期管理、导航与传递数据。 - UITableView:表格视图的创建与数据绑定。 #### 二、核心功能实现与优化技巧 - **网络通信**: - 使用URLSession发起HTTP请求。 - JSON...
4. 视图控制器的生命周期:在实现彩票应用时,我们需要理解UIViewController的生命周期,比如`viewDidLoad()`、`viewWillAppear(_:)`和`viewDidAppear(_:)`等方法,以便在正确的时间点进行初始化、加载视图和更新...
本篇文章将深入探讨“iOS开发 - 第01篇 - UI基础 - 03 - 应用程序管理”这一主题,通过一个简单的示例程序帮助初学者理解应用程序生命周期、启动过程以及状态管理。 首先,我们需要了解iOS应用的基本结构。每个iOS...
Core Data是一个对象图形管理框架,它可以处理对象的生命周期和关系,同时也支持查询优化。创建一个Core Data模型来表示联系人实体,然后在应用中进行增删改查操作,确保数据的完整性和一致性。 在提供的压缩包文件...
在iOS开发领域,iPad应用的开发是一个重要的分支,因为它提供了更大的屏幕空间,可以实现更为丰富的交互和展示。这篇教程将聚焦于iPad开发中的一个关键组件——`UIPopoverController`,并结合QQ空间这一实例进行讲解...
《深入MIDP2.0(1) - 谈生命周期与安全性》是关于移动设备应用程序开发的专业资料,主要聚焦于Java Mobile Information Device Profile(MIDP)2.0的特性,尤其是其生命周期管理和安全机制。MIDP是Java Micro Edition...
此外,了解如何利用Dependency Injection(依赖注入)和Singletons(单例模式)来管理对象生命周期,也是提升代码组织能力的重要一环。 第三,iOS中的核心组件和服务如Core Data、Core Animation、Core Location、...
`UIViewController`是所有界面的基础,它负责管理视图的生命周期和数据。在这个QQ聊天界面中,我们可能需要至少两个`UIViewController`,一个是聊天列表视图,显示联系人和最近的对话;另一个是聊天详情视图,展示与...
《iOS游戏应用源代码解析——以iosdeveloper-ImageCropper-04cef90为例》 在iOS开发领域,源代码是理解应用运行机制、学习编程技术和...同时,这也是一次对iOS应用程序架构、对象生命周期管理和内存管理的良好实践。
23. **调试与生命周期**:理解ViewController和View的生命周期,以及如何进行有效的调试。 综上所述,iOS开发者不仅需要扎实的技术基础,还需要对整个开发流程、苹果的生态系统、用户体验设计和安全性有深入的理解...
尽管JsonKit在早期iOS开发中非常流行,但随着Apple在iOS 5.0引入了内置的NSJSONSerialization类,其使用逐渐减少。NSJSONSerialization是Apple官方推荐的JSON解析和序列化工具,它已经集成了ARC,并且在性能和易用性...
### UI第一章:无限互联iOS开发教程课件 -- iPhone开发入门 #### iOS系统概述与架构 - **iOS系统**:作为苹果公司专为iPhone、iPod touch及iPad设计的操作系统,iOS自诞生以来就以其简洁易用的特点受到全球用户的...
2. **App Delegate**:每个iOS应用都有一个AppDelegate对象,负责处理应用生命周期的事件,如启动、进入后台等。 3. **Storyboard**:可视化设计工具,用于创建应用的界面布局和导航结构。 4. **MVC模式**:Model-...
UIKit包含了各种UI组件,如按钮、标签、文本输入框等,以及处理用户交互和管理应用生命周期的方法。学习者将学习如何使用Storyboard进行界面布局,以及如何用代码动态创建界面元素。 除此之外,课程还会涉及Model-...
6. **App生命周期与Performance优化**:理解应用的生命周期对于创建流畅的游戏至关重要。例如,了解何时加载和释放资源,如何处理内存警告,以及如何在后台模式下保存游戏状态,都是提高用户体验的关键。 7. **...
Core Data是Apple提供的一个对象图管理框架,可以方便地处理模型层对象的生命周期和关系。 除此之外,UI设计也是iOS开发的重要部分。此项目可能使用Storyboard或SwiftUI来构建用户界面。Storyboard是Xcode中的可视...
UUID可以通过`CFUUID`框架获取,它是稳定的,并且在设备的整个生命周期内都不会改变。 接下来,我们聚焦Keychain。Keychain是iOS系统提供的一个安全存储服务,它可以存储各种类型的数据,包括但不限于: 1. 用户名...
你需要理解小程序的生命周期,页面结构,数据绑定,事件处理,以及如何通过微信开发者工具进行调试和发布。 6. **小程序API**:在计算器小程序中,可能需要用到小程序提供的API,例如网络请求(用于更新或存储用户...
iOS应用的生命周期和状态管理是开发者必须理解的概念。书中会阐述如何处理应用的启动、暂停、恢复和终止,以及如何有效地管理内存和后台任务。此外,还会涉及到数据持久化,包括使用Core Data进行对象关系映射,以及...