object c load(相当于java的静态代码块)和initialize (相当于java中的构造代码块)

ESP32-P4实战:LVGL V9.4 PPA加速配置与性能对比 本文详细介绍了如何在ESP32-P4平台上配置LVGL V9.4的PPA硬件加速功能,通过启用PPA加速显著提升图形处理性能并降低CPU占用率。文章包含环境准备、配置步骤、性能对比及常见问题解决方案,帮助开发者高效利用ESP32-P4的PPA加速器优化嵌入式GUI应用。 阅读详情

//
//  main.m
//  LoadAndInitialDemo
//
//  Created by 千雅爸爸 on 16/10/7.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Child.h"
#import "Parent.h"

int main(int argc, const char * argv[]) {
    //+++++++++++++注意main 方法是在load 和initlize中间调用,但是main中的autoreleasepool 是在initlize之后调用的++++++++++++++++++++
     NSLog(@"Main 方法被执行了");
    @autoreleasepool {
        //load 和initlize 相当于是java 中的静态代码块,构造代码块类似,load 相当于是静态代码块,initlize 相当于是构造代码块
        //http://blog.youkuaiyun.com/rodulf/article/details/52748295
        //java中的执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。
        
        
        //先根据创建一个parent 类,然后是child类,
        //然后是child的分类,command+n,然后选择object-c file,然后是 class child,
    
        //load方法是一个类方法,是会被我们系统自动调用的,而这个方法的调用就是看文件是否被装载,只要是在我们compile source中出现的,总是会被我们的程序装载的,load方法总是在main函数之前被调用的。
        //compile source 可以通过点击左侧的蓝色的标志的,然后点击build pharse,然后点击compile source
        
        //这个load 就相当于是java中的静态代码块
        
        //在parent ,child类中重写,在child分类load中重写,最后调用的顺序是parent -》child-》child的分类,注意了所有的子类执行完了,才执行分类里面的load方法,分类一定是这里面最后调用的。
        //load方法是线程安全的,使用了锁
        
        //inilize main函数调用之后,只会调用一次,就是惰性调用机制,有利于去节约资源
        //inilize主要用来初始化全局变量和静态变量的,看名字就知道了
        
        //主要应用于不方便在编译器进行初始化的对象进行赋值
        //NSMutableArray 依赖于runtime的消息发送
        
        
        Child *child =[[Child alloc]init];
    }
    return 0;
}




首先创建parent,child,child的分类,和other的类

parent:

//
//  Parent.h
//  LoadAndInitialDemo
//
//  Created by 千雅爸爸 on 16/10/7.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Parent : NSObject


@end

//
//  Parent.m
//  LoadAndInitialDemo
//
//  Created by 千雅爸爸 on 16/10/7.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#import "Parent.h"

@implementation Parent

static int number = 0;
static NSMutableArray *mutableArray;

//重写
+(void)load{
    NSLog(@"parent load 方法");
}

//重写,被调用一定是使用的时候
+ (void)initialize
{
    //注意这里需要用if来判断,如果不用if来判断,
    //那么如果child 没有重写这个方法,child 也会调用这里的方法的
    if(self == [Parent class]){
    NSLog(@"parent Initailize 方法被调用了");
    }
    mutableArray = [NSMutableArray array];
    
}

@end



child:

//
//  Child.h
//  LoadAndInitialDemo
//
//  Created by 千雅爸爸 on 16/10/7.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#import "Parent.h"

@interface Child : Parent

@end

//
//  Child.m
//  LoadAndInitialDemo
//
//  Created by 千雅爸爸 on 16/10/7.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#import "Child.h"

@implementation Child

//重写
+(void)load{
    NSLog(@"child load 方法");
}

//重写,被调用一定是使用的时候
+ (void)initialize
{
    NSLog(@"child Initailize 方法被调用了");
}


@end

//
//  Child+Load.h
//  LoadAndInitialDemo
//
//  Created by 千雅爸爸 on 16/10/7.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#import "Child.h"

@interface Child (Load)

@end

//
//  Child+Load.m
//  LoadAndInitialDemo
//
//  Created by 千雅爸爸 on 16/10/7.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#import "Child+Load.h"

@implementation Child (Load)

//重写
+(void)load{
    NSLog(@"child load 分类 方法");
}
@end

//
//  Other.h
//  LoadAndInitialDemo
//
//  Created by 千雅爸爸 on 16/10/7.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Other : NSObject

-(void) printName;
+(void) originalFunc;

@end

//
//  Other.m
//  LoadAndInitialDemo
//
//  Created by 千雅爸爸 on 16/10/7.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#import "Other.h"

@implementation Other

static NSString *name;

//重写
+(void)load{
    name = @"Other";
    NSLog(@"Other load 方法");
}

-(void)printName{
    NSLog(@"%@",name);
}

@end



gm/ID设计方法实践指南:从理论曲线到电路优化的关键步骤 本文详细介绍了gm/ID设计方法在模拟IC设计中的实践指南。该方法通过直接利用工艺模型数据,将设计焦点从盲目调整晶体管尺寸转向选择关键的gm/ID工作点,从而在先进工艺下实现功耗、增益和带宽等性能的精准权衡与优化。文章从理论曲线生成到具体电路设计步骤,提供了完整的实战流程。 阅读详情

相关推荐

编程_三大编程思想:POP、OOP、AOP

简单介绍POP、OOP、AOP三大编程思想的区别和优缺点~

mikimo的博客 3895

Java Object类

Java是一种面向对象的编程语言,它提供了一个非常强大的类库,其中一个基本类是Object类。Object类是Java类层次结构的根,也是所有Java类的父类。这个类提供了一些通用方法,可以在任何Java对象中使用,这些方法可用于比较、克隆、打印对象等。

笔记 1341

【数学建模】 进化计算与群体智能

遗传算法(GA)是一种用于优化和搜索问题的启发式算法。它模拟了自然选择的过程,其中个体通过遗传和变异进行繁殖,逐渐进化出更优的解。基本步骤初始化:生成初始种群。适应度评估:评估种群中每个个体的适应度。选择:根据适应度选择个体进行繁殖。交叉:选定个体对进行基因交换,生成新的后代。变异:对一些个体进行基因变异,以增加多样性。迭代:重复评估和繁殖过程,直至达到停止条件。粒子群优化算法(PSO)是一种基于群体智能的优化算法,由Kennedy和Eberhart于1995年提出。其灵感来源于鸟群觅食的行为。

weixin_42914989的博客 1113

java initialize_java 初始化

初始化顺序在一个类里,初始化的顺序是由变量在类内的定义顺序决定的。即使变量定义大量遍布于方法定义的中间,那些变量仍会在调用任何方法之前得到初始化——甚至在构建器调用之前。例如://: OrderOfInitialization.java// Demonstrates initialization order.// When the constructor is called, to create ...

weixin_28870939的博客 1676

生态位宽度计算&可视化展示(R语言)

物种的生态位越宽,该物种的特化程度就越小,倾向于泛化种(generalist species);物种的生态位越窄,倾向于是一个特化种(specialists species)。生态位宽度是指物种(或其它生物单位)在群落中所利用的各种不同资源的总和。本篇所使用为生态位宽度指数即**Levins的生态位宽度指数。

weixin_53705272的博客 4435

【BigWorld 游戏服务器引擎】Cell 架构设计介绍,及Java实现方案的探索

横向扩展(Scalability):通过动态增减CellApp和BaseApp的数量,可以轻松应对玩家人数的变化。世界可以做得非常大,只需增加更多的 Cell。负载分离(Load Separation):将不同性质的负载分离,避免了单一进程瓶颈。CPU 密集型的实时计算(CellApp)和 I/O 密集型的数据操作(BaseApp)互不影响。高效的视野管理(AOI):每个 Cell 只关心自己区域内和边界上的实体,大大降低了计算复杂度。容错性:某个CellApp。

代码时光 1205

java initialize_10-JAVA初始化

1 概述Java中,每个类在使用前都需要进行初始化,所以理解初始化是理解java的开端。在Java中有两个隐藏了的方法:和。这两个方法是属于Java虚拟机的,也就是说在程序中我们是不可以调用的。具体可见:"clint":对类进行初始化。即在类被装载时,JVM会调用内置的方法对类成员和静态初始化块进行初始化调用(也就是static部分)。"init":对对象进行初始化。即在创建对象时,JVM会调用方...

weixin_33561009的博客 1330

MTK Camera HAL 与 FeaturePipe 架构解析:从硬件抽象到功能管线的工程落地路径

MTK 的 Camera 系统在 Android 平台下采用高度模块化的 HAL 与 FeaturePipe 架构组合,分别承担着底层硬件抽象与上层功能封装的职责。通过将 ISP、3A 算法、Sensor 驱动与图像处理节点解耦封装于功能链条中,联发科平台实现了灵活可控的影像能力调度机制。本文将基于真实项目实践,系统解析 MTK Camera HAL 与 FeaturePipe 架构的设计思路、核心模块与运行机制,结合 AE/AWB/AF 控制流、Buffer 管理策略、功能管线构建方法与多线程调度实现方式

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1571

Objective-C的+load方法调用原理分析

Objective-C之Category的底层实现原理 Objective-C的+initialize方法调用原理分析 别人是这么说的 调用时机:+load方法会在Runtime加载类对象(class)和分类(category)的时候调用 **调用频率:**每个类对象、分类的+load方法,在工程的整个生命周期中只调用一次 调用顺序: 先调用类对象(class)的+load方法: 类对象的l...

RUNNING-NIUER的博客 700

Simulink仿真状态空间中状态变量时域响应

起因 今天老师留了一道关于状态空间变量响应的题,于是想用simulink仿真,一开始使用state-space模块,但是发现它只能输出y,没办法显示状态变量的变化情况。然而状态变量之间的关系都可以表示为一阶微分方程组,因此我们考虑在Simulink中搭建微分方程组来求解这个问题。 微分方程组 x1˙=x2x2˙=−4x1−5x2+1(1)\dot{x_1}=x_2\\ \dot{x_2}=-4x_...

ZYunfei的博客 7448

OpenClaw 性能调优五步法

本文介绍了优化OpenClaw性能的五步方法,将响应时间从3秒降至300毫秒。首先建立性能基线,分析模型加载、上下文检索等主要瓶颈。五步优化包括:1)启用模型缓存减少60%延迟;2)优化记忆检索策略降低25%延迟;3)并行化工具调用节省40%时间;4)智能选择轻量级模型减少50%推理时间;5)启用流式输出改善70%感知延迟。最终整体性能提升10倍,并建议建立持续监控机制。这些优化方法经过实战验证,适用于不同规模的OpenClaw部署场景。

刘一说的IT专栏 1427

Java初始化执行顺序

初始化的作用: 为类中的成员变量赋值。 成员变量:(对于Java中变量不清楚的可以点击这里查看java中变量的介绍) (1)静态变量,类变量 (2)实例变量 初始化分为两种 (1)类初始化:执行一个叫做<clinit>()类初始化方法 cl = class ,init = initialize (2)实例初始化:执行对应的<init>(【…】)实例初...

# Never Give up & 250

可控异常的契约化设计:在 ABAP 中用 CX_STATIC_CHECK 把可预期错误变成接口的一部分

文章摘要: 本文探讨了ABAP系统中异常处理的工程化设计原则,强调将可预期的业务异常作为接口契约的一部分。核心观点是:对于调用方能够合理处理的错误情况,应使用继承自CX_STATIC_CHECK的受检异常,通过方法签名强制调用方处理或显式转发。文章对比了ABAP三大异常根类的适用场景,提出"三问法"判断异常是否适合受检处理,并给出了包含上下文信息的异常类实现示例。通过Fiori文件上传案例,展示了如何在分层架构中合理传递和转换异常,最终在OData服务层将业务异常映射为标准错误响应。这种

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3063

Objective-C 中 +load 与 +initialize

类的加载 在java语言里,可以通过如下代码来实现加载类的时候执行对类的操作,一般叫:类初始块,或者,类加载块。比如:   public class MyClass{ static{ …… } }  在objc语言里,对应的机制是,2个类初始化方法,+(void)load和+(void)initialize。 比如:   #i

cactusz的博客 238

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Objective-C类初始化:load与initialize

在C语言中,main()是程序最早开始启动和初始化的地方。 在Objective-C中,application,documents,user interface都有自己初始化的地方,所以,在main()中只是简单的调用 NSApplicationMain。  Objective-C中第一个初始化的地方是 +(void)load. 任何class都能有一个+(void)load。 1 +lo

tyforfreedom的专栏 875

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

iOS Objective C类方法load和initialize问题集合

一.  版本1     在Objective-C中,NSObject是根类,而NSObject.h的头文件中前两个方法就是load和initialize两个类方法,本篇文章就对这两个方法做下说明和整理。Objective-C作为一门面向对象语言,有类和对象的概念。编译后,类相关的数据结构会保留在目标文件中,在运行时得到解析和使用。在应用程序运行起来的时候,类的信息会有加载和初始化过程。就像Appl...

代码解释生活 821

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

NSObject的load和initialize方法

类的加载 在java语言里,可以通过如下代码来实现加载类的时候执行对类的操作,一般叫:类初始块,或者,类加载块。比如:   Java代码   public class MyClass{         static{             ……         }     }     在objc语言里,对应的机制是,2个类初始化方法,+(vo

showmyself 334

使用Objective-C的+(void)initialize初始化static变量

在《Objective C类方法load和initialize的区别》一文中,我介绍了Objective-C对待+(void)initialize和+(void)load两个方法在编译和执行时出现的不同。而这些不同也是在使用时应该非常注意的地方。不过文章里面我没有讲这两个方法在Objective-C中究竟有什么实用价值。 其实+(void)initialize可以视为C#,Java中的静态构

zhuhai__yizhi的专栏 546

C18_OC08-load、initialize、description

/** 前文中的“类”,就是“类对象” 类对象的类型叫Class-类(看到这个单词,似乎有种Java的亲切感) 前文中的“对象”,就是“实例对象” 实例对象的类型叫类 程序启动时,会加载全部的类(原类)和分类(增强类),加载完毕会执行一次且仅一次各类的load 程序启动后,当第一次调用某个类(类对象)时,会执行一次且仅一次其initialize方法 **/ #import

Vigiles的编程基础 1489

iOS面试:3.Object-C相关

需要注意的是,Objective-C 的编译过程中还涉及到 Objective-C 运行时库的支持,因为 Objective-C 是一种动态语言,它需要在运行时进行方法调度、消息传递等操作,这些都依赖于 Objective-C 运行时库的支持。在 Objective-C 中,可以将一个 B 类型的对象赋值给 A 类型,因为 Objective-C 是一种动态类型的语言,它使用的是指针来引用对象,而不是直接操作对象本身。在动态类型语言中,变量的类型是在运行时确定的,而不是在编译时确定的。

长沙火山 1480
上一篇: Java中普通代码块,构造代码块,静态代码块区别及代码示例
下一篇: object c的分类
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值