黑马程序员技术交流社区

标题: 大家对延展怎么看? [打印本页]

作者: herobin    时间: 2016-1-8 23:56
标题: 大家对延展怎么看?
延展怎么看,有什么用啊?
作者: 香草芭芙    时间: 2016-1-10 09:33
三种作用吧.
1. 写在源文件 .h中 增加公有属性, 公有方法
2. 写在源文件 .m中 增加私有属性, 私有方法
3. 写在单独的 .h 文件中, 和2 一样.

应用场景的话
1. 对外只有get方法, 对内有get,set方法的时候.
2. 版本升级的时候 , 需要增加属性, 不用动原来的代码 , 可以继续往下增加属性 & 方法 , 写到一半不需要了 , 直接删掉就行.
一般是 情况1 用的比较多.
比如人一生下来, 有父母给的遗产, 只会花钱 不会挣钱的场景...
main.m
  1. #import <Foundation/Foundation.h>
  2. #import "Person.h"
  3. int main(int argc, const char * argv[]) {
  4.     @autoreleasepool {
  5.         Person * p = [[Person alloc] initWithMoney:100000];
  6.         
  7.         printf("%.2f\n",p.money);

  8.         [p buySome];

  9.         printf("%.2f\n",p.money);
  10.     }
  11.     return 0;
  12. }
复制代码

Person.h
  1. #import <Foundation/Foundation.h>

  2. @interface Person : NSObject

  3. /** money */
  4. @property(nonatomic, assign, readonly) float money;

  5. - (instancetype)initWithMoney:(float)money;
  6. - (void)buySome;
  7. @end
复制代码

Person.m
  1. #import "Person.h"

  2. @interface Person ()
  3. /** money */
  4. @property(nonatomic, assign, readwrite) float money;
  5. @end
  6. @implementation Person
  7. - (instancetype)initWithMoney:(float)money {
  8.         self = [super init];
  9.         if (self) {
  10.                 _money = money;
  11.         }
  12.         return self;
  13. }
  14. - (void)buySome {
  15.         self.money -= 4000;
  16. }
  17. @end
复制代码


作者: 笑声不断    时间: 2016-1-10 11:11
主要用于解决category时,方法不私有的问题。延展可以拥有私有属性和方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2