黑马程序员——OC基础语法—@property和@synthesize使用

本文详细介绍了Objective-C中的@property和@synthesize指令的使用方法,包括如何用它们来简化setter和getter方法的声明与实现,以及一些重要的注意事项。

OC基础语法—@property和@synthesize使用

 

 @property 和 @synthesize 和点方法类似,简化那些不必要的代码。只适用setter和getter,作用是让编译器自动生成setter和getter方法。@propety用在@interface 类的声明中,@synthesize 用在@implementation 类的实现中,举个例子:

 

 @property int age;           //  用这句代码就等价于下面两句,自动生成成员变量_age的setter方法和getter方法的申明

 

- (void)setAge:(int)age;

-(int)age;

 

 @synthesize age=_age;      //  用这句代码等价于下面两句,自动生产成员变量_age的setter方法和getter方法的实现

- (void)setAge:(int)age

{

  _age=age;

}

-(int)age

{

  return _age;

}

 1.@ property的作用:

   用在@inteface中

用来自动生成setter和getter的声明

 用@property int age;就可以代替下面的两行

- (int)age;   // getter

- (void)setAge:(int)age;  // setter

 

 2.@synthesize 的作用:

用在@implementation中

用来自动生成setter和getter的实现

 

用来自动生成setter和getter的实现

用@synthesize age = _age;就可以代替

- (int)age{

return _age;

}

- (void)setAge:(int)age{

_age = age;

}

 

 

其中 @synthesize age=_age;  这里的_age是成员变量,想对哪个变量进行访问就填哪个变量。

如果我们不定义成员变量,却还是让 @property 和 @synthesize 自动生成set和get方法,编译器并不会报错,而且会帮助我们生成这个没有定义的变量,但是类型是@private的。

 

  @interface

  @property int no;

@end 

  @implementation

  @synthesize no=_no;

 @end

 

这段代码中,没有去定义成员变量_no ,@property会自动帮我们生成一个@private _no 以供完成使用。

 

3.@ synthesize 使用注意:

1). @synthesize age = _age;

setter和getter实现中会访问成员变量_age

如果成员变量_age不存在,就会自动生成一个@private的成员变量_age

2).@ synthesizeage;

setter和getter实现中会访问成员变量age

如果成员变量age不存在,就会自动生成一个@private的成员变量age

3).手动实现

若手动实现了setter方法,编译器就只会自动生成getter方法

若手动实现了getter方法,编译器就只会自动生成setter方法

若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量

 

在Xcode4.4以后,@synthesize可以省略不写,一个@property可以做三件事情,第一创建成员变量,第二生成set和get的声明,第三生成set和get的实现。

注意点:1.如果自己有定义成员变量或set和get方法,编译器不会再自动生成,优先读取自己定义的。

        2.编译器自动生成的变量是@private类型,子类不能直接访问。

 

内容概要:本文围绕不确定环境下的多式联运路径优化问题展开研究,提出并实现了基于AFO算法、遗传算法(GA)粒子群优化算法(PSO)的三种智能优化方法,并借助Matlab平台完成算法编程与仿真。研究构建了考虑时间、成本、转运风险等多重不确定因素的路径优化模型,系统比较了AFO、GA、PSO三种算法在收敛速度、全局寻优能力稳定性方面的表现,同时引入Matlab自带的全局优化搜索器作为基准对照,深入分析各算法在复杂物流网络中的适用边界与性能差异。研究表明,AFO算法在解决此类组合优化问题时展现出更快的收敛效率更强的局部规避能力。; 适合人群:具备一定Matlab编程基础与运筹优化知识,从事物流工程、交通运输规划、智能算法开发等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于多式联运、综合货运网络中的路径决策支持系统构建;②为不确定性条件下复杂路径规划问题提供智能算法选型依据与技术实现方案;③支持科研人员复现主流优化算法并开展横向性能对比实验,推动算法改进与实际落地。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析算法实现流程,重点理解目标函数设计、约束条件处理及参数敏感性分析部分,可通过调整问题规模与算法参数进行对比实验,进一步拓展至动态路径规划或大规模网络优化等延伸场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值