在分类中动态声明成员变量的方法(runtime)(转载)

文章转载自http://www.jianshu.com/p/7e92471c9b90

分类是一种很好的扩展类的方式,我们学习分类的时候会学到一点:分类不能声明成员变量深入浅出理解分类(category)和类扩展(extension),但是在我们的实际运用中,有的时候确实需要一个全局变量供各个不同的方法间传值调用,那么分类中一定不能声明成员变量了么?

其实我们可以在分类中声明成员变量,不过要添加一些代码,下面让我们来添加试试看。

本文受到文章iOS分类中通过runtime添加动态属性启发,提供一下比较适合新手的添加方式以及原因。
1.首先让我们定义一个类Children和Children类的分类Children_eat,我们假设这样一个场景,家里有两个小朋友,他们午饭要吃大虾,每个人有10只大虾,吃完午饭后要告诉妈妈他们吃了几只。
2.我们知道Children_eat类中要有两个方法,a.-(void)eatShrimp b.-(void)tellMother,这个时候我们需要一个变量大虾Shrimp,它不能是一个static变量,因为每个小朋友十个虾,而不是共有十个虾,不能共用变量。
3.在头文件中我们定义一个assign型的成员变量shrimp,两个方法,eatShrimp和tellMother.

这里写图片描述
4.在.m文件中,首先添加头文件,第二步为变量配置固定地址,这里有很多种写法,有兴趣可以百度一下。

这里写图片描述
5.下面让我们来使用这个变量,看看他能否真的被使用。
5.1首先来写eatShrimp方法和tellMother方法的实现。

eatshrimp3.png

5.2我们在main函数中写一个例子,假设两个孩子,Allen和Mike一起吃中饭。

这里写图片描述
5.3让我们看一下结果,可以看出来shrimp这个成员变量被操作了。

eatshrimp5.png
6.我们再试着定义一个NSString类型的变量str,看看它和int型的写法有什么不同。下面实现中添加一行使用str。

eatshrimp6.png
7.让我们运行一下

eatshrimp7.png
8.现在我们可以方便的使用分类来拓展类,并且可以定义变量来使用了~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值