一个菜鸟对OC的积累 -- 属性

讲到属性, 首先我们应该想一下我们以前的 get / set 取值方法</span>
首先我们创建一个 类
#import <Foundation/Foundation.h>
<span style="font-family: Arial, Helvetica, sans-serif;">@interface Car : NSObject</span>
{
NSString *_name; <span style="font-family: Arial, Helvetica, sans-serif;">// 刚开始我们这样定义一个成员变量</span>
<span style="font-family: Arial, Helvetica, sans-serif;">}</span>

 

创建完成员变量, 我们开始对它进行 set / get  方法   赋值 / 取值 

// set 方法
// 给_name赋值
- (void)setName:(NSString *)na;

 get 方法
- (NSString *)name;



 然后我们到 .m文件中实现上两个方法

- (void)setName:(NSString *)a

{
_name = a;  <span style="font-family: Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);">//  此时我们的 set / get 方法 是为了给成员变量赋值</span>
}

- (NSString *)name
{
return _name;
}

之后我们在主函数 (main函数) 中用该类的对象调用即可  // 我随意创建了个 Car类

Car *c = [[Car alloc] init];
[c setName:@"赋值"];
NSString *result = [c name];
这样我们即完成了对 _name 这个成员变量的取值以及赋值 但是不免感觉这样有点麻烦  于是接下来 我们决定使用属性

同样在 刚才的类的  .h 文件中  // .m 文件 和 主函数(main) 不用改变

#import <Foundation/Foundation.h>
@interface Car : NSObject
// {
// NSString *_name; // 将这些注释掉 
// }
@property (nonatomic) NSString *name; // 新的 name 属性
之后我们在 主函数 (main) 中 NSLog(@"result = %@", result); 会发现结果依然和刚才一样
 

为什么失去了 _name 参数  get / set 方法不仅没有报错 而且输出的result结果也想相同?

我们可以这么理解  既是当我们创建了 属性时  系统自带的给我们提供了 对应的成员变量 所以在我们注释掉 _name时 程序仍能运行

同样 我们尝试把 在 .m文件中的 get / set 方法也注释掉 会发现结果仍然没变 所以可以理解为 创建属性的同时也顺带建立了 get / set 方法

所以能看出 写属性 能大量的简化代码





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值