ios initialize和init等方法

在程序运行过程中,创建多个类对象,只会调用一次initialize。而创建几个类对象就会调用几次init;

创建一个类aa,分别重写 initialize和init方法

#import "aa.h"

@implementation aa

+ (void)initialize{
    NSLog(@"%s",__func__);

}

- (instancetype)init{
    self = [super init];
    if (self) {
    NSLog(@"%s",__func__);
    }
    return self;
}
@end

在viewcontrller里创建两个aa类的对象

#import "ViewController.h"
#import "aa.h"

@interface ViewController ()
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    aa *a1 = [[aa alloc]init];
    aa *a2 = [[aa alloc]init];
}
@end

打印结果是:

      

结论:在程序运行过程中,创建多个类对象,只会调用一次initialize。而创建几个类对象就会调用几次init;

创建一个类bb 继承自aa类

#import "aa.h"

@interface bb : aa

@end

在ViewController里创建两个bb类对象

#import "ViewController.h"
#import "bb.  
@interface ViewController ()
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    bb *b1 = [[bb alloc]init];
    bb *b2 = [[bb alloc]init];
}
@end

打印结果:

    

结论:如果是子类的话,创建几次实例,initialize和init就会被调用几次

时间: 2024-11-13 12:35:57

ios initialize和init等方法的相关文章

Unity3D IOS IPhone添加Admob的方法

原地址:http://dong2008hong.blog.163.com/blog/static/4696882720140403119293/ 首先阅读官方文档https://developers.google.com/mobile-ads-sdk/docs/ 按步就班注册获取AdMob Publisher ID已及开发SDK包和DEMO工程,确保官方的demo工程能正确运行: 如果没法运行,再仔细阅读官方文档!! 为了省事,就直接在BannerExampleViewController上修改

IOS开发之——四种方法解析Jason数据(转)

本文将介绍TouchJson. SBJson .JSONKit 和 iOS5所支持的原生的json方法,解析国家气象局API,TouchJson和SBJson需要下载他们的库 TouchJson包下载: http://download.csdn.net/detail/enuola/4523169 SBJson 包下载: http://download.csdn.net/detail/enuola/4523177 JSONKit包下载:http://download.csdn.net/detail

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 = [[

iOS 高效开发-----实现description 方法 (续)

在 “iOS 高效开发-----实现description 方法”这篇文章的最后,我留下了一个问题,就是,如果要给每个自定义的类覆写description方法和debugDescription方法 ,那将是一件非常庞大的工作量 ,因为自定义的类很多 ,而且每个自定义的类中的属性都会随着需求的修改出现变化 ,那么就又得修改这两个方法,那就变得无穷无尽了,永无宁日了,要么不用,要么就要找到更好得方法去用. 接下来,我们会用到动态运行时runtime. 我们先假设我们要处理的类中的属性都是OC的对象,

iOS中解析json多种方法

我感觉JSON解析,重要的是JSON解析之后对结果的处理JSON解析后是个dictionary,但是字典中有可能包含字典和数组,数组中还可以包含字典.向客户端请求的返回数据解析下面就简单介绍一下JSON解析过程其实就一句话 "data就是解析数据"!!!!!!!!!!!!!! //xcode自带解析类NSJSONSerialization从data中解析出数据放到字典中NSDictionary *weatherDic = [NSJSONSerialization JSONObjectW

OC initialize和init

Objective-C很有趣的一个地方是,它非常非常像C.实际上,它就是C语言加上一些其他扩展和一个运行时间(runtime). 有了这个在每个Objective-C程序中都会起作用的附加运行时间,给了它一些动态的特性.C和C++没有运行时间,他们仅仅被编译为完全按照代码的顺序去执行,不多也不少.Objective-C中带有运行时间的好处是,它可以在你的程序运行的流程中进行参与.在Objective-C中,它包括检查是否一个对象可以处理特定的消息,如果不能处理,它就帮助你自动调用其他特定的方法去

C#/IOS/Android通用加密解密方法

原文:C#/IOS/Android通用加密解密方法 公司在做移动端ios/android,服务器提供接口使用的.net,用到加密解密这一块,也在网上找了一些方法,有些是.net加密了android解密不了,或者反之.下面的是三个平台都可以加密解密的方法.加密解密中用到的key="1234578";在调取方法时传值即可. C#代码 #region 跨平台加解密(c#) /// <summary> /// 对字符串进行DES加密 /// </summary> ///

ios图片拉伸两种方法

ios图片拉伸两种方法 UIImage *image = [UIImage imageNamed:@"qq"]; 第一种: // 左端盖宽度 NSInteger leftCapWidth = image.size.width * 0.5f; // 顶端盖高度 NSInteger topCapHeight = image.size.height * 0.5f; // 重新赋值 image = [image stretchableImageWithLeftCapWidth:leftCapW

cisco低端交换机IOS升级失败的处理方法

大家都知道,cisco设备IOS升级是很简单的,就只要搭个ftp或tftp服务器,然后在cisco设备上使用 copy tftp:(或ftp:)flash:(高端设备一般为sup-bootdisk:) 就可以了.并且高端设备升级失败后,即使你删除了原有的IOS,也只需要弄一张flash卡,将IOS直接拷至flash卡,然后插至引擎上带的 flash卡插槽,再设置一下IOS文件位置就可以了.但低端设备没有配置flash插槽,此时怎么办呢?可能大家已经想到使用xmodem方式将IOS 文件拷到设备的