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