category是什么?扩展一个类的方式用继承好还是类目好?为什么

如题所述

1、Objective-C的类可以多重继承么?可以采用多个协议么?
不可以多重继承,可以采用多个协议。
2、#import和#include的区别是什么?#import<> 跟 #import""有什么区别?
#import能避免头文件被重复包含的问题:
1. 一般来说,导入objective c的头文件时用#import,包含c/c++头文件时用#include。
使用include要注意重复引用的问题:
class A,class B都引用了class C,class D若引用class A与class B,就会报重复引用的错误。
2. #import 确定一个文件只能被导入一次,这使你在递归包含中不会出现问题。
所以,#import比起#include的好处就是它避免了重复引用的问题。所以在OC中我们基本用的都是import。

#import<> 包含iOS框架类库里的类,#import""包含项目里自定义的类。
3、Category是什么?扩展一个类的方式用继承好还是类目好?为什么?
Category是类目。用类目好,因为继承要满足a is a b的关系,而类目只需要满足a has a b的关系,局限性更小,你不用定义子类就能扩展一个类的功能,还能将类的定义分开放在不同的源文件里, 用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。
4、延展是什么?作用是什么?
延展(extension):在自己类的实现文件中添加类目来声明私有方法。
5、类实例(成员)变量的@protected ,@private,@public声明各有什么含义?
@protected:受保护的,该实例变量只能在该类和其子类内访问,其他类内不能访问。
@private:私有的,该实例变量只能在该类内访问,其他类内不能访问。
@public:共有的,该实例变量谁都可以访问。
6、id声明的对象有什么特性?
Ø æ²¡æœ‰ * 号
Ø åŠ¨æ€æ•°æ®ç±»åž‹
Ø å¯ä»¥æŒ‡å‘ä»»ä½•ç±»çš„å¯¹è±¡(设置是nil),而不关心其具体类型
Ø åœ¨è¿è¡Œæ—¶æ£€æŸ¥å…¶å…·ä½“ç±»åž‹
Ø å¯ä»¥å¯¹å…¶å‘é€ä»»ä½•ï¼ˆå­˜åœ¨çš„ï¼‰æ¶ˆæ¯
7、委托是什么?委托和委托方双方的property声明用什么属性?为什么?
委托:一个对象保存另外一个对象的引用,被引用的对象实现了事先确定的协议,该协议用于将引用对象中的变化通知给被引用对象。

委托和委托方双方的property声明属性都是assign而不是retain
为了避免循环引用造成的内存泄露。
循环引用的问题这样理解:
比如在main函数中创建了两个类的对象A和B,现在引用计数都是1。现在让A和B互相引用(A有一个属性是B对象,属性说明是retain;B有一个属性是A对象,属性说明是retain),现在两个对象的引用计数都增加了1,都变成了2。
现在执行[A release]; [B release]; 此时创建对象的main函数已经释放了自己对对象的所有权,但是此时A和B的引用计数都还是1,因为他们互相引用了。
这时你发现A和B将无法释放,因为要想释放A必须先释放B,在B的dealloc方法中再释放A。同理,要想释放B必须先释放A,在A的dealloc方法中再释放B。所以这两个对象将一直存在在内存中而不释放。这就是所谓的循环引用的问题。
要想解决这个问题,一般的方法可以将引用的属性设置为assign,而不是retain来处理。
8、浅拷贝和深拷贝区别是什么?
浅层复制:只复制指向对象的指针,而不复制引用对象本身。
深层复制:复制引用对象本身。
意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一个思想。深复制就好理解了,内存中存在了两份独立对象本身。
用网上一哥们通俗的话将就是:
浅复制好比你和你的影子,你完蛋,你的影子也完蛋
深复制好比你和你的克隆人,你完蛋,你的克隆人还活着。
温馨提示:内容为网友见解,仅供参考
无其他回答

category是什么?扩展一个类的方式用继承好还是类目好?为什么
Category是类目。用类目好,因为继承要满足a is a b的关系,而类目只需要满足a has a b的关系,局限性更小,你不用定义子类就能扩展一个类的功能,还能将类的定义分开放在不同的源文件里, 用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。4、延展是什么?作用是...

iOS分类(category)、类扩展(extension)、继承的区别
iOS在2.0就已经推出分类(Category),它允许开发者在不改动原有类的情况下,对该类进行扩展使用。分类(Category)是OC中的特有语法,它是表示一个指向分类的结构体的指针。原则上它只能增加方法,不能增加成员(实例)变量,具体原因看源码:从中我们可以看出,这个结构体主要包含了分类定义的实例方法与...

谈谈iOS中Categories,Extensions和继承的区别
Category 增加的方法如果与类的方法同名,会覆盖原类的方法,因为Category的优先级更高!所以用Category重载继承的类的方法是非常危险的!虽然Objective-C语言目前允许使用category来通过重载继承的类的方法或者甚至是类文件中的方法,但是这种做法是被强烈反对的。category不是子类的替代品。使用category 来重载...

iOS中分类(Category)、扩展(Extention)和继承(Inheritence)的区别?
category是在现有类的基础上添加新的方法,利用objective-c 的动态运行时分配机制,可以为现有类添加新方法。可以在分类中添加方法和成员变量,但是添加的成员变量不会自动生成setter和getter方法,需要在实现部分给出实现。 .h中 扩展:         ...

oc中protocol,category和继承的区别
利用继承,多态是一个很好的保持“对扩展开放、对更改封闭”(OCP)的办法,也是最常见的一种方法。Objective C还支持另外两种语法来支持OCP:Protocol和Category。Protocol只能定义一套接口,而不能提供实现,变相的也是一种Abstract class的实现方式(oc 语法上本身不支持抽象基类)。Category可以为类提供...

类别和继承什么区别
类别\/类目\/Category 很方便给现有类添加方法。但是不能添加成 员变量,匿名类除外,比如可以给 NSString 增加方法,给 UINavigationBar 增加方法,比 如 SDWebImage 给 UIImageView 增 加了 setImageWithURL:方法。类别对于使用者很方便

category 是什么意思?
种类:在某一分类系统中特别定义的部分;类别 A general class of ideas, terms, or things that mark divisions or coordinations within a conceptual scheme, especially:范畴:在一个概念体系中标明区别或联系的观念、术语或事物的一般类别,尤指:Aristotle's modes of objective being, such as ...

Category 是什么意思?
后康德方式:后康德主义哲学中哲学概念的一种基本逻辑类型 French catégorie 法语 catégorie from Old French 源自 古法语 from Late Latin cat¶a [class of predicables]源自 后期拉丁语 cat¶a [可预测的种类]from Greek kat¶a [accusation, charge]源自 希腊语 kat¶a [控告...

类目和项目的区别
类目是指产品的类型和目录。类指的是一个产品所属的类别,是一个较大范围的内容目也是说事物能够被人们所看见的目录。类目是商品最重要的属性之一。项目,是指一系列独特的、复杂的并相互 关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间、预算、资源限定内,依据规范完成。

类目词和关键词那个好?
类目词(Category Keywords):定义: 类目词是与网站或电商平台的产品或服务分类相关的关键词,用于描述整个产品或服务类别。特点: 类目词通常更宽泛,不如关键词那么具体,但它们涵盖了一个整个产品类别。例子: 对于一个电商网站,关键词可能是“折叠式自行车”,而与之相关的类目词可能是“自行车”或“...

相似回答