OC学习那些事:self、自动释放、变量作用域

本文详细介绍了Objective-C中变量作用域的概念,包括公共、受保护和私有变量的使用方式,并探讨了自动释放机制、self关键字的应用场景及私有方法的实现方式。此外,还解释了new方法的具体用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.变量的作用域

变量必须定义的{}中

@public:全局都可以方法

@protected:只能在类的内部和子类中访问(默认

@private:只能在类的内部方法

@interface Student : NSObject 
{ 
    @public 
    int _age; 
    int _no; 
 
    @private 
    int _name; 
 
    float height; 
} 

self->height直接访问成员变量

2.自动释放

使用autorelease方法,不用调用[sturelease]方法手动释放

Student *stu= [[[Studentalloc]initWithAge:10 andNo:1001]autorelease];

使用系统的静态方法,都是自动释放

3.self

谁调用这个方法self就指向谁

+(void)test2 
{ 
    //等效的两个语句 
    [Student alloc]; 
    [self alloc] 
} 

4.私有方法

如果直接把方法写在.m文件中,没有在.h文件中声明,那么这就是私有方法

self在静态方法中,指向类;在动态方法中,指向当前对象;总结:谁调用了这个方法,就指向谁

@implement Student 
… … 
-(void)test 
{ 
    //self在动态方法中,代表当前对象 
    int age = self.age; 
} 
 
+ (void)test2 
{ 
    //self在静态方法中,代表类 
    //[Student alloc]; 
    [self alloc]; 
} 
@end

5.new方法

Student *stu = [Student new];等效 
Student *stu = [[Student alloc]init]; 

把下述python代码换成matlab语言graph TD A[MPC控制器] -->|调度指令| B[光伏MPPT] A -->|调度指令| C[风机MPPT] A -->|启停信号| D[柴油发电机] A -->|充放电计划| E[储能系统] A -->|负荷预测| F[负荷管理]class PVSystem: def __init__(self, V_oc=45, I_sc=8): self.V = V_oc self.I = I_sc self.step = 0.5 # 电压扰动步长 def mppt_perturb_observe(self, V_pv, I_pv): P_old = self.V * self.I P_new = V_pv * I_pv if P_new > P_old: self.V += self.step if (V_pv > self.V) else -self.step else: self.step *= -0.8 # 反向搜索 return self.Vclass WindTurbine: def __init__(self, R=3.2, lambda_opt=7): self.R = R # 叶片半径(m) self.lambda_opt = lambda_opt # 最佳叶尖速比 def mppt_tsr(self, wind_speed, gen_speed): tip_speed_ratio = (gen_speed * self.R) / wind_speed delta = 0.05 * (self.lambda_opt - tip_speed_ratio) return gen_speed + delta # 调整发电机转速class WindTurbine: def __init__(self, R=3.2, lambda_opt=7): self.R = R # 叶片半径(m) self.lambda_opt = lambda_opt # 最佳叶尖速比 def mppt_tsr(self, wind_speed, gen_speed): tip_speed_ratio = (gen_speed * self.R) / wind_speed delta = 0.05 * (self.lambda_opt - tip_speed_ratio) return gen_speed + delta # 调整发电机转速class DieselGenerator: def __init__(self, P_max=50): # 50kW柴油机 self.status = False self.P_out = 0 def start_stop(self, demand, soc): if demand > 0.8*soc and not self.status: self.status = True self.P_out = min(demand - soc, self.P_max) elif demand < 0.2*soc and self.status: self.shutdown() def shutdown(self): self.status = False self.P_out = 0class EnergyStorage: def __init__(self, capacity=100, soc=0.5): # 100kWh self.soc = soc self.charge_mode = 'CC' # 恒流/恒压 def charge_control(self, P_demand, V_bus): if self.soc < 0.2: return
最新发布
03-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值