Objective-C中该如何使用Extension与Category-创新互联

下面一起来了解下Objective-C中该如何使用Extension与Category,相信大家看完肯定会受益匪浅,文字在精不在多,希望Objective-C中该如何使用Extension与Category这篇短内容是你想要的。

创新互联建站服务项目包括佛坪网站建设、佛坪网站制作、佛坪网页制作以及佛坪网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,佛坪网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到佛坪省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

Objective-C 2.0增加了class extensions用于解决两个问题:

  1. 允许一个对象可以拥有一个私有的interface,且可由编译器验证。

  2. 支持一个公有只读,私有可写的属性。

私有接口(Private Interface)

Objective-C 2.0以前, 若要定义私有函数,通常是在实现文件中声明一个"Private" category:

@interface MyClass (Private) 
 - (id)awesomePrivateMethod; 
@end

然而, 类的私用方法通常是希望实现在类的@implementation块中的,而不是像上面的Category的方法那样实现在独立的@implementation区块中。事实上,Category仅仅是弥补了Objective-C缺少public/private限定的不足。

真正的问题是Objective-C编译器会认为在Category中声明的方法将会在别处实现,所以编译器并不会尝试确认它们是不是真得都被实现了。也就是说,开发者声明的方法有可能并未实现,而且编译器也不会有什么警告。编译会以为它们将在别的地方或独立的文件中实现。

使用class exteionsion,在其中声明的方法和属性的实现将放在class的@implementation区块中。否则,编译器就会报错。

[cpp] view plaincopyprint?

  1. // someClass.m

  2. @interface someClass ()

  3. -(void)extend;

  4. @end

  5. @implementation someClass

  6. // 所有声明在头文件或父类中方法的实现

  7. // 或者一些私有函数

  8. -(void)extend {

  9.     // implement private method here;

  10. }

  11. @end

公有可读、私有可写的属性(Publicly-Readable, Privately-Writeable Properties)


实现一个不可变(immutable)的数据结构通常有一个好处是外部代码不能用setter修改对象的状态。然而,可能又希望它在内部又是一个可写的属性。Class extensions可以做到这一点:在公共接口(类的声明中)中,开发者可以声明一个属性是只读的,随后在类扩展中声明为可写。这样,对外部代码而言,该属性将是只读的,而内部代码却可以使用它setter方法。

[cpp] view plaincopyprint?

  1. @interface MyClass : NSObject

  2. @property (retain, readonly) float value;

  3. @end

  4. // 私有的extension, 隐藏在主实现文件中.

  5. @interface MyClass ()

  6. @property (retain, readwrite) float value;

  7. @end


看起来相似,其实不同

Class extension常常被误解为一个匿名的category。它们的语法的确很相似。虽然都可以用来为一个现有的类添加方法和属性,但它们的目的和行为却是不同的。

看完 Objective-C中该如何使用Extension与Category这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的行业资讯栏目。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:Objective-C中该如何使用Extension与Category-创新互联
文章地址:http://pwwzsj.com/article/dcsspp.html