关闭

initialize 的用处

185人阅读 评论(0) 收藏 举报
分类:

+(void) initialize 的用处

例如 你有一个类 这个类中的多有方法都是类方法即:

#import <Foundation/Foundation.h>


@interface Car : NSObject



+ (void)run;


+(void)jump;


@end




#import "Car.h"


@implementation Car


static NSMutableArray * g_mArr = nil;



+(void)initialize{

    g_mArr = [NSMutableArray array];

}


+ (void)run{

    [g_mArr addObject:@"run];

       NSLog(@"%@",g_mArr);

}


+(void)jump{

     [g_mArr addObject:@"jump"];

}


@end


打印结果如下

2015-11-20 15:12:07.149 dfasdf[1390:192525] (

    run,

    jump

)

在这里我们没有调用这个initialize方法,但是为什么initialize自己就调用了呢?因为initialize 是在 init 调用之前调用的  只要你用到了这个类他就会自动调用这个方法 而且只是调用以次

百度到的结果如下:

调用

NSLog(@"Hello, World!");


Duck* duck1 = [[Duck alloc] init];

Duck* duck2 = [[Duck alloc] init];

Duck* duck3 = [[Duck alloc] init];


Chicken* chicken = [[Chicken alloc] init];



#import "Duck.h";


@implementation Duck


+(void) initialize {

    NSLog(@"Duck initialize class:%@",[self class]);

}


+(void) load {

    NSLog(@"load");

}



-(void) init {

    NSLog(@"Duck init");

}


#import <cocoa/Cocoa.h>


#import "Duck.h"


@interface Chicken : Duck {

    

}

/**

 *  2008-03-23 20:21:08.816 initialize_example[30513:10b] Hello, World!


  2008-03-23 20:21:08.818 initialize_example[30513:10b] load


 2008-03-23 20:21:08.818 initialize_example[30513:10b] Duck initialize class:Duck

 

 2008-03-23 20:21:08.819 initialize_example[30513:10b] Duck init

 

 2008-03-23 20:21:08.820 initialize_example[30513:10b] Duck init

 

 2008-03-23 20:21:08.820 initialize_example[30513:10b] Duck init

 

 2008-03-23 20:21:08.820 initialize_example[30513:10b] Duck initialize class:Chicken

 

 2008-03-23 20:21:08.821 initialize_example[30513:10b] Duck init

 */


运行时间的行为之一就是initialize。虽然看起来有点像大家常见的init,但是他们并不相同。


在程序运行过程中,它会在你程序中每个类调用一次initialize。这个调用的时间发生在你的类接收到消息之前,但是在它的超类接收到initialize之后。

但是 load 只会调用一次


@end

0
0
查看评论

+(void)load; +(void)initialize;有什么用处?

在Objective-C中,runtime会自动调用每个类的两个方法。+(void)load会在类初始加载时调用,+(void)initialize会在第一次调用类的类方法或实例方法之前被调用。这两个方法是可选的,且只有在实现了它们时才会被调用。 共同点:两个方法都只会被调用一次。
  • loveFromLeo
  • loveFromLeo
  • 2015-12-30 18:17
  • 646

initialize方法和init区别详解

1、定义Father类 // // Father.m // // Created by 李建 on 15/8/22. // Copyright (c) 2015年 李建. All rights reserved. // #import "Father.h" @imp...
  • sbvfhp
  • sbvfhp
  • 2015-08-22 11:31
  • 10919

php中__initialize()方法

在php中,_initialize()方法相当于php5中的_construct()函数 其主要用于将所有公用的东西在此函数里声明! 具体应用:       class Action extends MyTpl{    &#...
  • szq466028431
  • szq466028431
  • 2011-12-14 14:53
  • 15993

ThinkPHP框架中_initialize()函数的使用

_initialize()方法现在类中可以自动运行,即通过URL去调用类中的其它方法,_inlitialize()方法也会自动运行。 这个特性就有一个好处,比如开发网站会遇到下面的情况,通过登录进入后台管理页面,如果没有添加验证,直接通过url就可以进入到后台管理页面,这样很不安全,所以要在方法中...
  • tangxiaolang101
  • tangxiaolang101
  • 2015-10-15 14:14
  • 1770

thinkphp 中_initialize和__construct的区别

最近在模仿写一个权限管理系统,其中在继承AuthController中用到了_initialize。class AuthController extends Controller { protected function _initialize(){ } }首先,_initializ...
  • laughing2333
  • laughing2333
  • 2015-09-22 23:34
  • 2777

shell的用处到底大不大

我曾在智联招聘等网站上搜寻有关shell脚本员的职位,与C++、JAVA等热门语言相比,冷清很多。看上去似乎招shell程序员的公司比较少。是不是公司不重视或者是很少用到shell这个东东呢?        我使用shell写脚本已经将近一年,对于shell...
  • kelehaier
  • kelehaier
  • 2016-12-27 12:44
  • 345

thinkphp篇之__construct()和__initialize()

关于thinkphp中的__construct()和_initialize()的理解 网上有很多的说法和用法,自己测试了一下,下面是根据测试结果并结合自己的理解得出的结论,如有不对的地方,欢迎大家纠正!!! 我们先看一下Thinkphp自带的Controlle类的内容(ThinkPHP\Libr...
  • CNYYGJ
  • CNYYGJ
  • 2016-12-14 23:22
  • 312

工作中遇到的问题和解决办法8(could not initialize a collection的问题)

07年6月8日(1)could not initialize a collection的问题已经解决这几天很郁闷,一直在为这个问题苦恼~代码也看过了,配置文件也都没有错.在百度GOOGLE上泡了几天,虽然也有出现同样的问题,在问题的最后都没有回复的答案,最后都是些已经沉得不能再沉的死帖啦!今天幸而把...
  • derpvailzhangfan
  • derpvailzhangfan
  • 2007-06-08 16:33
  • 6656

ThinkPHP之__construct()和__initialize()

ThinkPHP中的__initialize()和类的构造函数__construct() 网上有很多关于__initialize()的说法和用法,总感觉不对头,所以自己测试了一下。将结果和大家分享。不对请更正。 首先,我要说的是 1、__initialize()不是php类中的函数,php类的构造函...
  • e421083458
  • e421083458
  • 2013-11-15 14:22
  • 47233

JavaScript中的self、this、call、apply、prototype、initialize

最近在学习EaselJS框架,于是看了一些JavaScript,也在学习的过程中产生了许多问题,不过很多问题网友们也有这样的疑问,好在许多前人总结了问题,我在这里分享一个问题,一下原文来自网络,我做了整理。原文链接在文尾prototype.js代码片段 代码如下:var Class = { ...
  • Frank_Jay
  • Frank_Jay
  • 2015-12-05 21:48
  • 1825
    个人资料
    • 访问:114230次
    • 积分:3137
    • 等级:
    • 排名:第13091名
    • 原创:209篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条