OC----synthesize 关键字

@synthesize 关键字

6.1 问题: setter, getter的实现也是没有什么任何技术含量
6.2 作用: 自动生成getter、setter方法的实现.
6.3 语法: @synthesize @property名称; 如:

    @interface Person : NSObject{
    	int _age;
    }
    @property int age;
    @end
    
    @implmentation Person
    	@synthesize age;
    @end

6.4 原量:

    @implementaion Person{ int age; }
        - (void)setAge:(int)age{ self->age = age; }
        - (int)age{ return age; }
    @end
 
    等价于上面的原始写法:
    @implmentation Person
        @synthesize age;
    @end
1 生成1个真私有的属性.属性的类型和@synthesize对应的@property类型一致. 属性的名字和@synthesize对应的@property名字一致.
2 自动生成setter方法的实现. 实现的方式: 将参数直接赋值给自动生成的那个私有属性.并且没有做任何的逻辑验证.
3 自动生成getter方法的实现. 实现的方式: 将生成的私有属性的值返回

6.5 希望@synthesize不要去自动生成私有属性了. getter setter的实现中操作我们已经写好的属性就可以了.
    1 语法:   @synthesize @property名称 = 已经存在的属性名;
    	如: @synthesize age = _age;
    2 不会再去生成私有属性. 直接生成setter getter的实现,
        setter的实现: 把参数的值直接赋值给指定的属性.  { _age = age; }    与原始写法一样
        gettter的实现: 直接返回指定的属性的值.        { return = _age; } 与原始写法一样
    
    3 注意:
        1). 如果直接写1个@synthesize  如: @synthesize name;
        2). 如果指定操作的属性. 如: @synthesize name = _name;
        3). 生成的setter方法实现中 是没有做任何逻辑验证的 是直接赋值.
        生成的getter方法的实现中 是直接返回属性的值.
        如果setter或者getter有自己的逻辑验证 那么就自己在类的实现中 重写(原始写法)就可以了.
    
    4 批量声明:
        1). @property的类型一致. 可以批量声明.
        	@property float height, weight;
        2). @synthesize也可以批量声明. (类型不一致是可以的)
        	@synthesize name = _name, age = _age, weight = _weight, height = _height;
        	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果你以前使用过其他面向对象编程语言,那么学习Objective-C的基本语法会相对容易一些。Objective-C在许多传统的面向对象概念上有所体现,例如封装、继承和多态。然而,Objective-C也有一些重要的不同之处。如果你之前没有编写过任何编程语言的程序,那么在开始学习Objective-C之前,建议你先对相关概念进行一些基础的了解。了解对象的使用和对象的架构对于创建iPhone应用程序非常重要。Objective-C是C语言的超集,所以对C语言的了解也会对学习Objective-C有所帮助。希望这些信息对你有所帮助。如果你想进一步学习Objective-C的教程,可以参考Objective-C的@property详解、Objective-C入门教程03:属性(@property和@synthesize)、OC点语法和变量作用域、IOS SEL (@selector) 原理及使用总结、关于OC中的block自己的一些理解、Objective-C程序设计(电子书自行百度)等资料。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Objective-C 入门教程](https://blog.csdn.net/u010029439/article/details/106176034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Objective-C 30分钟入门教程](https://blog.csdn.net/weixin_30488313/article/details/96036745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值