A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© herobin 中级黑马   /  2016-1-8 23:56  /  977 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

延展怎么看,有什么用啊?

2 个回复

倒序浏览
三种作用吧.
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
复制代码

回复 使用道具 举报
主要用于解决category时,方法不私有的问题。延展可以拥有私有属性和方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马