首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS对UIViewController生命周期和属性方法的解析

iOS中的UIViewController是UIKit框架中最基本的一个类。从第一个UI视图到复杂完整项目,都离不开UIViewController作为基础。...这篇博客,旨在讨论UIViewController的生命周期和属性方法,在最基础的东西上,往往会得到意想不到的惊喜。...二、UIViewController的生命周期         要了解UIViewController,先要弄清楚其生命周期。...在面向对象的语言中,是对象,就一定要有生命周期,UIViewController也不例外,生命周期管理Controller的作用范围和时间,也管理其内对象的作用范围和时间。...3:loadView方法是开始加载视图的起始方法,除非手动调用,否则在ViewController的生命周期中没特殊情况只会被调用一次。

3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    View编程指南(二)

    一个window对象有几个职责: 它包含您的应用程序的可见内容。 它在将触摸事件传递到View和其他应用程序对象中起着关键作用。...如果要更改显示的内容,请改为改变window的最前面的view。 大多数iOS应用程序在其生命周期中只创建并使用一个window。...该window横跨设备的整个主屏幕,并在应用程序生命周期的早期从应用程序的主要nib文件(或以编程方式创建)加载。...但是,您可以使用应用程序的window对象来执行几个与应用程序相关的任务: 使用window对象将点和矩形转换为window的本地坐标系或从window的本地坐标系进行转换。...例如,要安装由VC管理的view,可以使用类似于以下内容的代码: [window addSubview:viewController.view]; 代替上述代码,您可以在您的nib文件中配置window

    81510

    iOS字符串的本地化(APP 内的本地化切换) 、nib本地化、图片本地化

    本地化字符串指定参数顺序(应用场景:app内的多语言切换)【修订】 前言 使用本地化功能,可以轻松地将应用程序翻译成多种语言,甚至可以翻译成同一语言的多种方言 如果要添加本地化功能,需要为每种支持的语言创建一个子目录...当本地化的应用程序需要载入某一资源时,如图像、属性列表、nib文件,应用程序会检查用户的语言和地区,并查找相匹配的本地化文件夹。...(采用) 2、通过发通知,到各个控制器更新文字(不采用) 3.2 一个语言对应多个字符串资源文件的方案 应用场景:解决部分英文国际化没有生效的问题 存储国际化英文字符串的.string文件长度受限,...NSLog(@"开始从Localizable1 找key:%@", tmp); tmp =NSLocalizedStringFromTableInBundle...使用步骤: 首先添加获取字符串的代码,比如在ViewController.m NSString *tip = NSLocalizedString(@"Tip", @"dialog title"

    1.6K30

    iOS SEL的理解与使用 原

    有很多人,认为block的推广可取代代理设计模式,其实block并不能取代代理,代理的模式可以让代码逻辑性更强,更整洁,也会有更高的可读性和可扩展性。...比如,我们生命一个叫myLog的函数指针: #import "ViewController.h" @interface ViewController () {     SEL myLog; } @end...有两种方式: 1、在编译时,使用@selector来取得函数 现在,我们应该明白@selector是什么了,它是一个编译标示,我们通过它来取到相应函数。...selector(click)];     [self.view addSubview:btn]; } -(void)click{     NSLog(@"点击了btn"); } 当然,如果要调用参数,系统提供的默认参数不超过两个...,如果参数很多,一种是我们可以通过字典传参,另一种方法比较复杂,在这里先不讨论。

    80740

    【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    .m 和 .h 后缀的文件; -- 界面设计文件 : Main.storyboard 是界面设计文件, 原来使用的是 nib 界面设计文件, storyboard 是新版本使用的; -- Supporting...:  -- PlaceHolder 列表区 : 包括 File's Owner 和 First Responder 两个文件; -- Objects 列表区 : 保存界面布局文件中的 UI 控件实例;..., Objects 列表区可以看到所有的 UI 控件; (4) xib 和 nib 文件 xib 和 nib 后缀文件 :  -- 新旧区别 : nib 后缀是传统格式, xib 后缀是新格式; --...nib 文件;  -- nib 文件 : Interface Builder 把窗口, 菜单栏 以及 各种 UI 组件都冻结在 nib 文件中, 使用 nib 界面设计文件, 这些 UI 控件对象已经被创建好...; -- 数据交换 : 获取委托对象, 可以向其中存取数据, 可以作为 IOS 应用的通信中心, 程序组件之间通过委托对象进行数据交互; -- 处理生命周期事件 : 应用程序委托对象还处理 IOS 应用的各种生命周期事件

    5K30

    awakeFromNib小总结

    大家好,又见面了,我是全栈君 awakeFromNib 在使用IB的时候才会涉及到此方法的使用。...当.nib文件被载入的时候,会发送一个awakeFromNib的消息到.nib文件里的每一个对象,每一个对象都能够定义自己的awakeFromNib函数来响应这个消息。运行一些必要的操作。...当程序对Nib文件进行反序列化然后初始化时,会调用一次awakeFromNib。 可是假设你使用initWithNibName调入Nib时,awakeFromNib是不会被调用的。...} 第二句:initWithcoder是系统自己主动调用的,以后说!!! 第三句和第四句:这两局setNeedsDisplay会异步的调用drawRect来更新view的内容。...第五句:首先结束后,view之后,呼叫处理好viewDidLoad该,所以无论从代码或从IB载入中view应该调用viewDidLoad的。

    46410

    Objective-c 知识总结 -- @property

    属性声明的初现版本 属性声明是 Objective-C 2.0 的新增功能; @property 是编译器指令,@property 完成的工作就是属性声明; 2. 属性声明的概念 属性?...从 Xcode 4.4 开始,当我们用 @property 进行属性声明的时候,编译器就会自动帮我们生成相应的 实例变量 + 存取方法声明 + 存取方法实现; 那什么情况下会破坏这种自动合成的过程呢?...= nil; // } // @end null_unspecified(_Null_unspecified) 不确定是否为空; _Null_unspecified 是 Xcode 6.3 开始使用的...,null_unspecified Xcode 8 开始使用,并能写进 @property 的选项列表中; Ep【 Xcode 7, iOS 9】: #import "ViewController.h".../** * 移除实例对象的所有关联值 * * @param object 实例对象 * * @note 这个方法的核心目的是为了方便让实例对象的所有关联值还原到初始状态;你不应该使用此方法来对一个关联值的进行还原

    1.4K31

    didReceiveMemoryWarning iOS开发

    iPhone下每个app可用的内存是被限制的,如果一个app使用的内存超过20M,则系统会向该app发送Memory Warning消息。...因此处理的主要工作是在viewController。 我们知道,创建viewcontroller时,执行顺序是loadview -> viewDidLoad。...这个方法的默认实现是这样:先寻找有关可用的nib文件的信息,根据这个信息来加载nib文件,如果没有有关nib文件的信息,默认实现会创建一个空白的UIView对象,然后让这个对象成为controller的主...网上对这个函数的描述含含糊糊,看了等于没看。 另外:如果controller存储了其他object和view的引用,你还得在dealloc方法中释放这些内存。...四、结论 所以流程应该是这样: (loadView/nib文件)来加载view到内存 ——>viewDidLoad函数进一步初始化这些view ——>内存不足时,调用viewDidUnload函数释放

    2.6K30

    【IOS开发基础系列】Storyboard专题

    你可以从 Object Library中拖控件(右下角)到viewcontroller 中,并修改它的布局。...,应用程序委托必须从 UIResponder 开始继承(原先则直接从NSObject继承),同时还有一个 UIWindow 属性(不同的是,它不是一个IBOutlet)。         ...在以前,如果你要定制表视图单元格,你要么在代码中向cell对象添加自己的 subviews ,要么新建一个 nib 然后从nib 中加载你自己的 cell。...拖两个 Label 到Cell 中,将它们放置到大致等于原先所在的位置。随意修改它们的字体和颜色。将两个label的高亮色为白色。...如果你连接 cell 上的一个Label 到ViewController 的 IBOutlet上,那么会有多个Label 在试图使用相同的 IBOutlet。那就麻烦了。

    1.3K30

    iOS应用构建与部署小结

    好我们今天的文章就这样结束了,… 才怪!...Apple Configurator 2 Apple Configurator 2是苹果公司提供的一个部署和配置工具,可以直接从AppStore下载。...OTA部署 OTA部署支持使用HTTPS的方式部署和分发你的ipa包,一个示例OTA链接地址如下: itms-services://?...个人建议直接使用源码编译而不是npm安装。 后记 本文从开发者的角度,介绍了iOS应用创建、编译、打包、测试、部署等方面, 从零开始构建并运行我们的第一个iOS程序。...既介绍了模拟器的安装测试方式, 也介绍了物理机上的打包和部署过程。其中很多地方尽可能的使用命令行去运行, 这有利于后续自动化的操作,也有利于我们理解各个选项所使用到的参数作用。

    2K40

    App的生命周期

    UIViewController 的生命周期 // 非storyBoard(xib或非xib)都走这个方法 - (instancetype)initWithNibName:(NSString *)nibNameOrNil...awakeFromNib 当awakeFromNib方法被调用时,所有视图的outlet和action已经连接,但还没有被确定,这个方法可以算作适合视图控制器的实例化配合一起使用的,因为有些需要根据用户喜好来进行设置的内容...loadView 当执行到loadView方法时,如果视图控制器是通过nib创建,那么视图控制器已经从nib文件中被解档并创建好了,接下来任务就是对view进行初始化。...因此loadView方法在视图控制器的生命周期内可能被调用多次。...UIView 的生命周期 - (instancetype)init { if (self = [super init]) { NSLog(@"%s",__func__);

    1.3K10

    制作动态framework与静态framework的那些坑

    今天我们来看看制作framework---dynamic和static这两中库需要注意的 1 基本的framework配置 配置(如下图)选择dynamic library ?...我们使用xib方式创建了tableView和cell以及一个viewcontroller 3 需要暴漏给外部使用h文件 好了基本的工程已经出来了,现在我们来看看怎么玩这两种形式的framework...对于这个库其实我们可以选择为Option形式,这样的话App启动时它是不会载入的,只有当使用到时才会动态的检测载入(这也是为啥称之为动态库啦),也正是因为此,我们的main bundle中不包含xib编译后的...采用路径方式查询资源,我们就按照路径拼接上资源所在的bungle即可) 2 xib加载 对于xib这个资源比较特殊,虽然是静态库但是依然被编译成为了nib文件存放在framework中 同样App默认也是从...其实啊,这个里面有个隐含问题:默认情况会搜素main bundle中医ViewController同名的xib,而我们的库需要加前缀才能定位,因此要手动使用加载nib的方式创建我们的Controller

    2.1K20

    UIViewController的生命周期及iOS程序执行顺序

    UIViewController的生命周期及iOS程序执行顺序 当一个视图控制器被创建,并在屏幕上显示的时候。...代码的执行顺序 1、alloc 创建对象,分配空间 2、init (initWithNibName) 初始化对象,初始化数据 3、loadView从nib载入视图,通常这一步不需要去干涉。...viewDidAppear视图已在屏幕上渲染完成 当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺序差不多和上面的相反 1、viewWillDisappear视图将被从屏幕上移除之前执行 2、viewDidDisappear...视图已经被从屏幕上移除,用户看不到这个视图了 3、dealloc视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放 关于viewDidUnload:在发生内存警告的时候如果本视图不是当前屏幕上正在显示的视图的话...他们都可以用来在视图载入的时候,初始化一些内容。 但是他们有什么区别呢? viewDidLoad 此方法只有当view从nib文件初始化的时候才被调用。

    1.9K110
    领券