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实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li