iOS开发-loadView和viewDidLoad总结

2023-12-22 02:18

本文主要是介绍iOS开发-loadView和viewDidLoad总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

iPhone开发必不可少的要用到这两个方法。

    他们都可以用来在视图载入的时候,初始化一些内容。 但是他们有什么区别呢?
viewDidLoad


     此方法只有当view从nib文件初始化的时候才被调用。viewDidLoad用于初始化,加载时用到的。
loadView


  此方法在控制器的view为nil的时候被调用。 此方法用于以编程的方式创建view的时候用到。loadView是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用(写)代码来实现控件。用于使用代码生成控件的函数。如:

  1.  - (
  2.   void ) loadView {
  3.   UIView *view
  4.   = [ [ UIView alloc] initWithFrame:[ UIScreen
  5.   mainScreen] .applicationFrame] ;
  6.   [ view
  7.   setBackgroundColor:_color] ;
  8.   self.view = view;
  9.   [ view release] ;
  10.   }
复制代码

    你在控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 如果设备内存不足的时候, view

    控制器会收到didReceiveMemoryWarning的消息。默认的实现是检查当前控制器的view是否在使用。如果它的view不在当前正在使用的view

      hierarchy里面,且你的控制器实现了loadView方法,那么这个view将被release,

      loadView方法将被再次调用来创建一个新的view。

      viewDidLoad ,不论是从xib中加载视图,还是从loadview生成视图,都会被调用。

      UIViewController 的内存管理
  在 iOS3.0 后,UIViewController 多了一个叫做
  viewDidUnLoad 的方法。
  先看下 UIViewController 从创建 view
  到展示的流程的几个函数
  -init
  -initWithNibName:bundle:
  这两个方法都是初始化一个
  vc,但请注意 view
  不是这时候载入的
  -loadView
  -viewDidLoad
  当一个视图准备展现时,vc 首先会判断


  view 是否已经创建否则便通过之前指定的 xib 文件来初始化 view,以及绑定其他关系(若没有指定 xib 文件,则默认会搜索和 vc 同名的

  xib,比如 myNameViewController 就会搜索 myNameViewController.xib 文件)
  若是没有xib 文件,你就可以在 loadview 中自己手动创建这个 viewControoler 需要的视图。接下来就是调用到
-viewDidLoad,许多人喜欢在这里做些其他事情,比如做个 http 请求、建立个数组啥的。这里若不处理正确,-viewDidUnload激活时内存就容易泄露了,稍后提到。


  -view()appear
  -view()disappear
  这几个方法就不解释了


  -viewDidUnload
  该方法在收到内存警告,同时该视图并不在当前界面显示时候会被调用,此时该controller 的 view 已经被释放并赋值为 nil。
  接下来你要做的是把实例变量的子视图释放(IBOulet的,以及自己添加的)其他实例变量,比如之前在 -viewDidLoaded 中实例的数据数组、http 请求释放掉。


  因为当该为空后会重复之前的流程直到把 view

  给创建起来。若没将自己额外添加的子视图,各种类实例变量释放,这里便会重新再次创建。
  于是,内存泄露了。


  注意iphone开发中的这两个函数viewWillAppear和viewDidAppear

  每当视图准备在屏幕上显示,或者视图已在屏幕上完全显示时,将调用这两个方法。

  viewWillAppear:方法更新准备显示的视图的信息。调用时,视图可能还没有被加载。

  使用viewDidAppear:来触发视图完全显示在屏幕上之后的行为,例如任何动画。

  viewdidload是当程序第一次加载view时调用,以后都不会用到,而viewDidAppear是每当切换到view时就调用。

  loadView和viewDidLoad方法。假设不使用xib文件对视图布局,那么loadView方法必须设置屏幕,并对任何子视图布局。每当继承一个具体的子类,例如UITableViewController或UITabBarController时,务必调用[super

  loadView]或者实现viewDidLoad。这样一来,在进行定制之前,父类可以对屏幕进行适当的设置。当代码基于具体的子类时,苹果的文档和示例代码鼓励使用viewDidLoad。

  viewDidLoad
  此方法只有当view从nib文件初始化的时候才被调用。viewDidLoad用于初始化,加载时用到的。
  loadView


  此方法在控制器的view为nil的时候被调用。 此方法用于以编程的方式创建view的时候用到。loadView是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于使用(写)代码来实现控件。用于使用代码生成控件的函数。

  viewDidLoad
  ,不论是从xib中加载视图,还是从loadview生成视图,都会被调用。

这篇关于iOS开发-loadView和viewDidLoad总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/522275

相关文章

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自