Miul 发表于 2015-6-15 16:18:30

继续学习,感谢楼主分享

Miul 发表于 2015-6-18 13:45:28

请问楼主,UIBarButtonItem分类实现中,实例方法是否合理?因为类方法已经alloc了一个实例对象,但是实例方法中没有用到这个新alloc的实例,而是又再函数中重新创建了一个实例?

Sian 发表于 2015-6-18 16:41:51

Miul 发表于 2015-6-18 13:45
请问楼主,UIBarButtonItem分类实现中,实例方法是否合理?因为类方法已经alloc了一个实例对象,但是实例方 ...

分类只是对UIBarButtonItem进行了一次封装,分类自身并不创建实例,实例还是UIBarButtonItem创建的。
打个比方,分类中方法A调用原主类的方法B和方法C,那么你调用分类的A方法,和你调用B和C是一样的效果。alloc方法也只是一个普通的方法,只是他做的事情特殊一点,不知道这样说你能否明白?

Sian 发表于 2015-6-18 16:44:01

Miul 发表于 2015-6-18 13:45
请问楼主,UIBarButtonItem分类实现中,实例方法是否合理?因为类方法已经alloc了一个实例对象,但是实例方 ...

不会两次alloc哦,分类方法实现中带alloc的都是类方法。

Miul 发表于 2015-6-19 13:47:35

Sian 发表于 2015-6-18 16:44
不会两次alloc哦,分类方法实现中带alloc的都是类方法。

楼主,可能我表达的不是很清楚。我的问题是这样的。在UIBarButtonItem+SA这个分类中,你实现了两个方法,一个类方法,一个实例方法。在类方法中alloc了一个对象,然后调用实例方法。而在你实现的这个实例方法中,你并没有用到类方法中alloc的这个实例,而是在实例方法中又重新alloc了一个实例并返回。我想问的是这样写是否合理?如果合理,那类方法中实例的对象,岂不是没有用到吗?谢谢解答。

Sian 发表于 2015-6-19 17:15:39

本帖最后由 Sian 于 2015-6-19 17:17 编辑

Miul 发表于 2015-6-19 13:47
楼主,可能我表达的不是很清楚。我的问题是这样的。在UIBarButtonItem+SA这个分类中,你实现了两个方法, ...
首先,你必须要搞清楚的是,不管分类还是原始类(为区分分类你应该能看懂),不管你写多少个方法都只是定义,如果不调用,方法写与不写其实没什么两样,此外,分类中不管写多少方法最终都是调用了原始类来执行,你可以当作分类中的所有方法都只是快捷方式而已。为什么这么说呢,突破点在于分类中所用到的self,指的不是UIBarButtonItem+SA,而是指UIBarButtonItem,这就是分类的特殊性。

如果是类方法,self指的就是UIBarButtonItem这个类,如果是实例方法,self指是就是调用该分类方法的对象本身。

你要记住,UIBarButtonItem+SA这个类其实并不存在,这是分类与继承的区别。

yangwise 发表于 2015-7-2 16:34:09

谢谢楼主 学习了

sk91600 发表于 2015-7-12 21:19:46

看了弟一讲,那注释写得真叫专业啊

nullptr 发表于 2015-7-20 14:50:32

谢谢,不错

Amor_ming 发表于 2015-7-23 11:47:48

mark mark mark mark mark
页: 1 2 3 4 [5] 6 7
查看完整版本: ios实战开发之仿新浪微博(第二讲:主框架搭建)