关于Object-C有关接口方面的应用

来源:互联网 发布:淘宝网棉背心 编辑:程序博客网 时间:2024/06/04 18:54

转《http://blog.sina.com.cn/s/blog_67f6d5850100kjme.html》


近日一直在设计一套应用类后来把Object-C基于协议方面的应用又深化了一下,现在分享给大家。

在实际应用中我们经常会用到需要接口的地方,那么Object-C的接口是如何应用的呢?我们举个例子

 

比如有两个类ClassA和ClassB,ClassA中有一个方法F1,ClassB中有一个方法F1,我们希望我们的TestClass这个类里面的一个方法Fx,根据情况又可以调用ClassA的方法又可以调用ClassB的方法,而且以后可能还会有ClassC和ClassD的出现,我们不希望老去修改TestClass的代码结构,那如何实现?

 

那我们就用Object-C的协议机制,建立一个协议(即通常的接口),然后让ClassA和ClassB分别实现这个接口,这样在TestClass中在创建这么一个接口变量就可以实现这种多重的调用了。

 

代码简略给出了啊,头文件等就按照标准规矩来就完了,不写那么多东西了,干货都是,呵呵

 

MyPTL.h

...

 @protocol MyPTL

 -(void) printData;

 @end

 

ClassA.h + .m 

ClassA: NSObject <MyPTL>

{

    -(void)printData

   {

      NSLog(@"ClassA----Print");

   }

}

 

ClassB.h + .m

ClassB: NSObject <MyPTL>

{

    -(void)printData

    {

       NSLog(@"ClassB----Print");

    }

}

 

TestClass.h + .m

TestClass: NSObject

{

    -(void)printEx: (id <MyPTL>) obj

   {

      [obj printData];

    }

 

Main.h + .m

 

TestClass *t = [[TestClass alloc] init];

ClassA *a = [[ClassA alloc] init];

ClassB *b = [[ClassB alloc] init];

 

[t printEx: a];

[t printEx: b];

 

结果输出就是:

 

ClassA----Print

ClassB----Print

 

这里讲述的是基本原理,给的代码是实现的核心代码,但是其他的一些结构和框架没有写出来,这些都是和平时写的东西没区别,大家慢慢体会Object-C的魅力吧:)

0 0
原创粉丝点击