`

object-c protocal

 
阅读更多

非正式协议(interface),但其实质仍是调用正式协议(protocal)

正式协议(protocal)可以将业务中的方法定义剥离出来,形成一个单独的文件,这跟传统OO中的提取接口是不谋而合的。如果遇到二个系统需要交换数据,可以制定一套双方都遵守的protocal,然后这二个系统中都把这个协议文件添加到项目中,实现它即可。这一功能,非正式协议(@interface)就做不到。

此外,obj-C 2.0中对正式协议还做了一些扩展,允许把正式协议中的方法标识为“必须实现(@requied)”和“可选实现(@optional)”二类,如果协议中的方法被标识为@optional,即使采用该协议的类不实现这些方法,编译器也不会给出警告。

 

下面的我们主要讨论正式协议的内容: 

定义:  协议(protocol)类似于java语言里的接口(interface),定义了一组方法,而不提供具体实现, 只有那些“遵守”(conform to)或“采用”(adopt)了这些Protocol的类来给出自己的实现。协议不是类本身,它们仅定义了其它对象有责任实现的接口。当在自己的类中实现协议的方法时,用户的类就是遵守这个协议的,协议声明的方法可以被任何一个类实现。

 

  1、协议的语法结构如下:

  @protocol ProtocolName   //协议名

   methodDeclaration;        //方法名
  @end
  2、如何使用协议
  而在类声明时,语法如下:

  @interface ClassName : ParentClassName < ProtocolName>

    然后在该类的实现文件中,实现该协议的方法methodDeclaration

 

 

就我个人总结来说,使用协议总的就分一下几个步骤:

1.协议声明/定义

2.调用协议

3.设置委托

4.协议的实现

 

实例分析:

复制代码
1、ContactsCtrl.h
#import <UIKit/UIKit.h>
//定义协议
@protocol ContactCtrlDelegate
-(void)DismissContactsCtrl;  //协议中的方法
@end
@interface ContactsCtrl : UIViewController {
    IBOutlet UINavigationBar *ContactNavBar;
    id <ContactCtrlDelegate> delegate;  //这个必不可少
}
@property (nonatomic, assign) id <ContactCtrlDelegate> delegate;

-(IBAction)canCelBtn:(id)sender;
@end

2、ContactsCtrl.m
@implementation ContactsCtrl
@synthesize delegate;   //还有这里
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
    ContactNavBar.topItem.prompt = @"选取联系人发送短信";
}

//调用协议中的方法
-(IBAction)canCelBtn:(id)sender{
    [delegate DismissContactsCtrl];  
}

3、ProtocolDemoCtrl.h
#import <UIKit/UIKit.h>
#import "ContactsCtrl.h"   //引入定义协议ContactsCtrlDelegate的头文件
@interface ProtocolDemoCtrl : UIViewController <ContactCtrlDelegate>{//添加委托
    ContactsCtrl *contactsView;
}

4、ProtocolDemoCtrl.m
#import "ProtocolDemoCtrl.h"
#define BARBUTTONADD(SELECTOR) [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:SELECTOR] autorelease];
@implementation ProtocolDemoCtrl
@synthesize contactsView;
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.rightBarButtonItem = BARBUTTONADD(@selector(addContactAction:));
}

- (void)addContactAction:(id)sender{
    ContactsCtrl *contactView = [[ContactsCtrl alloc] initWithNibName:@"ContactsCtrl" bundle:nil];
    self.contactsView = contactView;
    contactsView.delegate = self;      //设置委托
    [self presentModalViewController:contactsView animated:YES];
    [contactView release];   
}

//实现ContactCtrlDelegate协议中的方法
-(void)DismissContactsCtrl{
    [contactsView dismissModalViewControllerAnimated:YES];
}
复制代码

 

分享到:
评论

相关推荐

    如何学习Object-C语言《PDF文档》

    Object-C是一种基于C语言的面向对象编程语言,主要应用于苹果的iOS和macOS平台开发。学习Object-C语言是成为Apple平台应用开发者的必备技能之一。本文将深入探讨如何有效地学习和掌握这一强大的编程语言。 理解基础...

    如何学习Object-C语言(PDF文档)

    Object-C是一种基于C语言的面向对象编程语言,主要应用于苹果的iOS和macOS平台开发。学习Object-C语言是成为Apple平台应用开发者的必备技能之一。本文将深入探讨如何有效地学习和掌握这一强大的编程语言。 理解基础...

    如何学习Object-C语言

    Object-C是一种基于C语言的面向对象编程语言,主要应用于苹果的iOS和macOS平台开发。学习Object-C语言是成为Apple平台应用开发者的必备技能之一。本文将深入探讨如何有效地学习和掌握这一强大的编程语言。 首先,...

    Object-C语言教程

    Object-C,全称Objective-C,是一种基于C语言的面向对象编程语言,主要用于Apple的iOS和macOS平台开发。它在C语言的基础上添加了Smalltalk风格的消息传递机制,使得对象间的交互更加灵活。本教程将深入探讨Object-C...

    Object-C语言教程、案例、相关项目资源《PPT文档》

    Object-C,作为苹果公司开发的Objective-C(通常简写为ObjC)是一种基于C语言的面向对象编程语言,是iOS和macOS等Apple平台上的主要开发语言。它在C语言的基础上增加了Smalltalk风格的消息传递机制,为开发者提供了...

    Object-C语言教程&案例&相关项目资源(PPT文档)

    Object-C,作为苹果公司开发的Objective-C的缩写,是一种基于C语言的面向对象编程语言,广泛应用于iOS和macOS平台的软件开发。它在C语言的基础上添加了Smalltalk式的消息传递机制,使得面向对象编程更加灵活。 **1....

    Object-C语言教程&案例&相关项目资源

    提供的"Object-C语言教程&案例&相关项目资源"应该涵盖了从基础知识到实战项目的全方位学习资料,帮助你快速提升Objective-C编程技能。记得结合教程、案例和项目实践,理论与实践相结合,才能更好地掌握这门语言。

    Object-C期末复习_object-c_

    Objective-C(简称ObjC)是一种基于C语言的、面向对象的编程语言,主要用于苹果的iOS和macOS操作系统开发。在学习和准备Objective-C的期末复习时,我们需要掌握以下几个核心概念和知识点: 1. **类与对象**: - **...

    《Object-Oriented Programming with Object C》 英文高清原版 PDF

    《Object-Oriented Programming with Object C》是一本深入探讨面向对象编程(OOP)与Objective-C语言的专业书籍。Objective-C是Apple开发的一种强大的、面向对象的编程语言,主要用于iOS和macOS的应用程序开发。这...

    Object-C语言教程0220.zip基础知识及相关案例

    《Objective-C语言教程0220.zip》是一个包含Objective-C编程基础及实例的课程资源包。这个压缩包中,我们能够找到一系列与学习Objective-C语言相关的材料,包括图像和文本文件,旨在帮助初学者理解并掌握这门强大的...

    Object-C语言入门教程&代码示例 .zip

    Object-C(Objective-C)是苹果公司基于C语言开发的一种面向对象的编程语言,主要用于iOS和macOS平台的应用程序开发。它在C语言的基础上添加了Smalltalk风格的消息传递机制,使得面向对象编程更加灵活。本教程将帮助...

    Object-C/Swift官网文档

    Object-C,作为苹果早期的开发语言,是基于C语言并扩展了Smalltalk式的消息传递机制。它的主要知识点包括: 1. **消息传递**:这是Object-C的核心特性,通过消息传递实现对象间的通信,如`[receiver method]`语法。...

    Object-C的语法与Cocoa框架_V1.0_ios_base32u_

    Object-C是苹果公司为Mac OS X和iOS操作系统开发的应用程序编程语言,它是C语言的超集,融入了Smalltalk的面向对象特性。了解Object-C的基础语法和Cocoa框架对于开发苹果平台的应用至关重要。 **一、Object-C语法...

    Object-C语言,用C语言实现面向对象

    Object-C,全称Objective-C,是一种基于C语言的、面向对象的编程语言,由Stepanov和Moss在1983年为NextStep操作系统开发。苹果公司广泛使用Objective-C作为其iOS和macOS操作系统以及相关框架如Foundation和AppKit的...

    Object-C的语法与Cocoa框架

    Object-C是在C语言的基础上增加了面向对象的特性,其设计目标是为了提高程序的可维护性和代码复用性。 #### 二、GNUStep的安装 GNUStep是一个遵循GNU通用公共许可证的开源项目,提供了类似于苹果Cocoa框架的API集合...

    Object-C语言相关项目的示例

    总结来说,"Object-C语言相关项目的示例"涵盖了Objective-C的关键特性,包括类、消息传递、Category、协议、内存管理和Blocks,以及如何利用Foundation和UIKit框架进行应用开发。通过深入学习和实践这些示例,开发者...

    object-c学习教程PPT

    Objective-C(Object-C)是苹果公司开发的一种面向对象的编程语言,主要应用于iOS和Mac OS X操作系统。它是C语言的超集,包含了Smalltalk风格的消息传递机制,因此它具有C语言的底层控制能力和Smalltalk的灵活性。在...

    Object-C语言教程&案例&相关项目资源.docx

    4. **扩展性**:Objective-C支持通过类别(Category)和协议(Protocol)来对现有类进行扩展,增加新的方法或功能。 5. **垃圾回收**:Objective-C支持手动内存管理和自动垃圾回收两种内存管理方式,后来引入的ARC...

    Object-C-Object-C编程规范.zip

    Objective-C,简称ObjC,是苹果公司开发的一种面向对象的编程语言,它是C语言的超集,具有Smalltalk风格的消息传递机制。Objective-C主要用于iOS和macOS应用开发,是Apple平台的标准开发语言。本资料“Object-C/...

    Object-C的学习资料及14个Demo

    在Object-C中,你需要了解的关键概念还包括分类(Category)、协议(Protocol)和块(Block)。分类可以为已存在的类添加新的方法,而无需修改原始源代码。协议定义了一组可选的方法,类可以遵循协议以实现特定的...

Global site tag (gtag.js) - Google Analytics