init&initWithFrame&initWithCoder

//当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化
- (id)initWithFrame:(CGRect)frame
{
    if (self =[superinitWithFrame:frame]) {
        // 初始化代码
    }
    return self;
}

用于视图加载nib文件,从nib中加载对象实例时,使用 initWithCoder初始化这些实例对象
- (id)initWithCoder:(NSCoder*)coder
{
    if (self =[superinitWithcoder:coder]) {
        // 初始化代码
    }
    return self;
}

而在init,会先调用initwithframe方法来初始化视图内容
// init内部首先会调用这个方法,所以initWithFrame打印在前
- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        NSLog(@"initWithFrame");
    }
    return self;
}

// initWithFrame方法调用完毕后才执行这个方法体,所以init打印在后
- (instancetype)init
{
    // 这个方法内部调用,initWithFrame方法
    self = [super init];
    if (self) {
        NSLog(@"init");
    }
    return self;
}
时间: 2024-10-17 17:31:49

init&initWithFrame&initWithCoder的相关文章

UIView的layoutSubviews,initWithFrame,initWithCoder方法

****************************layoutSubviews************************************ layoutSubviews是UIView中的属性方法,即只要继承于UIView,就可以使用这个方法,这个方法也很强大,以下是他的触发时机: 1.init初始化不会触发layoutSubviews  2.addSubview会触发layoutSubviews  3.设置view的Frame会触发layoutSubviews,当然前提是fra

李洪强iOS开发之initWithFrame,initWithCoder和aweakFormNib

1 initWithFrame 通过代码创建控件的话用这个方法设置  2 initWithCoder(先执行) 与从xib加载有关系的 在此方法里面设置原有子控件的值是不行的,因为还没有连好线  3 aweakFormNib (后执行)方法的区别 与xib加载有关系 代表子控件从xib里面加载完成,并且,连线完成,直接可以使用 如果是从xib加载的来设置子控件的属性的话,要把代码放在aweakformNib里面

IOS视图控制器的生命周期

原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=contents 所谓的生命周期,也就是几个函数的调用顺序,这里以用Storyboard来创建一个ViewController为例 然后我们测试如下代码 // // ViewController.m // // Created by huangwenchen on 14/12/26. // Copyright (c) 2014年 huangwenchen. All rights rese

initWithFrame、initWithCoder、awakeFromNib的区别和调用次序 & UIViewController生命周期 查缺补漏

当我们创建或者自定义一个UI控件时,就很可能会调用awakeFromNib.initWithCoder .initWithFrame这些方法.三者的具体区别如下: initWithFrame: 通过代码创建UI控件的时候就会调用: initWithCoder:从文件中解析一个对象的时候就会调用这个方法,也就是说无论是通过代码还是xib,程序运行的时候都会调用这个方法: awakeFromNib:当一个对象从xib或者storyboard中加载完毕后,就会调用一次. 比如:当苹果官方提供的按钮不能

OC--init,initialize,initWithCoder:,initWithFrame:各方法的区别和加载顺序

1.先把OC的类分清楚各有什么方法 普通类的方法 init initialize: 控制器类的方法 init initialize: initWithCoder: UI控件类的方法 init initialize: initWithCoder: initWithFrame: 2.init方法 每个类被创建的时候就会调用init方法 Person *p1 = [[Person alloc]init];Person *p2 = [[Person alloc]init];Person *p3 = [[

awakeFromNib、initWithCoder、initWithFrame三者区别

(1)awakeFromNib和initWithCoder:差别awakeFromNib 从xib或者storyboard加载完毕就会调用initWithCoder: 只要对象是从文件解析来的,就会调用同时存在会先调用initWithCoder: (2)initWithCoder: & initWithFrame:initWithCoder:使用文件加载的对象调用(如从xib或stroyboard中创建)initWithFrame:使用代码加载的对象调用(使用纯代码创建)注意:所以为了同时兼顾从

疯狂iOS上1

一:iOS应用与开发环境 1.1 OC与iOS简介 1.2 搭建iOS开发环境 1.3 第一个OC程序 1.4 熟悉Xcode 左边导航面板从左到右依次是:项目导航.符号导航.搜索导航.问题导航.测试导航.调试导航.断点导航.日志导航,快捷键是command+1/2 右边检查器面板包括:文件检查器.快速帮助检查器.身份检查器.属性检查器.大小检查器.连接检查器,快捷键是command+option+1/2 右下端库面板包括:文件模板库.代码片段库.对象库.媒体库,快捷键是control+opti

创建控件系统自动调用方法的小小研究

闲来蛋疼,想看看每当我们以各种方式创建一个控件的时候,系统底层到底帮我们做了什么事儿!相信各位看官在开发中经常也会把系统自动调用的一些方法给拦截下来,再在这些方法中添加自己想实现的某个功能的代码.下面小小研究了某些控件创建时候系统自动帮助我们调用的某些方法.     我们创建控件的方法有三种      1.纯代码      2.storyboard      3.xib          创建控件的过程中系统会自动调用底层的一些方法,方法常见的大概如下      init      initWi

[iOS UI进阶 - 2.1] 彩票Demo v1.1

A.需求 1.优化项目设置 2.自定义导航栏标题按钮 3.多版本处理 4.iOS6和iOS7的适配 5.设置按钮背景 6.设置值UIBarButtonItem样式 B.实现 1.项目配置 (1)程序启动期间隐藏状态栏 (2)程序启动完成显示状态栏 AppDelegate: 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {