非正式协议(interface),但其实质仍是调用正式协议(protocal)
正式协议(protocal)可以将业务中的方法定义剥离出来,形成一个单独的文件,这跟传统OO中的提取接口是不谋而合的。如果遇到二个系统需要交换数据,可以制定一套双方都遵守的protocal,然后这二个系统中都把这个协议文件添加到项目中,实现它即可。这一功能,非正式协议(@interface)就做不到。
此外,obj-C 2.0中对正式协议还做了一些扩展,允许把正式协议中的方法标识为“必须实现(@requied)”和“可选实现(@optional)”二类,如果协议中的方法被标识为@optional,即使采用该协议的类不实现这些方法,编译器也不会给出警告。
下面的我们主要讨论正式协议的内容:
定义: 协议(protocol)类似于java语言里的接口(interface),定义了一组方法,而不提供具体实现, 只有那些“遵守”(conform to)或“采用”(adopt)了这些Protocol的类来给出自己的实现。协议不是类本身,它们仅定义了其它对象有责任实现的接口。当在自己的类中实现协议的方法时,用户的类就是遵守这个协议的,协议声明的方法可以被任何一个类实现。
1、协议的语法结构如下:
@protocol ProtocolName //协议名
@end
@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是一种基于C语言的面向对象编程语言,主要应用于苹果的iOS和macOS平台开发。学习Object-C语言是成为Apple平台应用开发者的必备技能之一。本文将深入探讨如何有效地学习和掌握这一强大的编程语言。 理解基础...
Object-C是一种基于C语言的面向对象编程语言,主要应用于苹果的iOS和macOS平台开发。学习Object-C语言是成为Apple平台应用开发者的必备技能之一。本文将深入探讨如何有效地学习和掌握这一强大的编程语言。 理解基础...
Object-C是一种基于C语言的面向对象编程语言,主要应用于苹果的iOS和macOS平台开发。学习Object-C语言是成为Apple平台应用开发者的必备技能之一。本文将深入探讨如何有效地学习和掌握这一强大的编程语言。 首先,...
Object-C,全称Objective-C,是一种基于C语言的面向对象编程语言,主要用于Apple的iOS和macOS平台开发。它在C语言的基础上添加了Smalltalk风格的消息传递机制,使得对象间的交互更加灵活。本教程将深入探讨Object-C...
Object-C,作为苹果公司开发的Objective-C(通常简写为ObjC)是一种基于C语言的面向对象编程语言,是iOS和macOS等Apple平台上的主要开发语言。它在C语言的基础上增加了Smalltalk风格的消息传递机制,为开发者提供了...
Object-C,作为苹果公司开发的Objective-C的缩写,是一种基于C语言的面向对象编程语言,广泛应用于iOS和macOS平台的软件开发。它在C语言的基础上添加了Smalltalk式的消息传递机制,使得面向对象编程更加灵活。 **1....
提供的"Object-C语言教程&案例&相关项目资源"应该涵盖了从基础知识到实战项目的全方位学习资料,帮助你快速提升Objective-C编程技能。记得结合教程、案例和项目实践,理论与实践相结合,才能更好地掌握这门语言。
Objective-C(简称ObjC)是一种基于C语言的、面向对象的编程语言,主要用于苹果的iOS和macOS操作系统开发。在学习和准备Objective-C的期末复习时,我们需要掌握以下几个核心概念和知识点: 1. **类与对象**: - **...
《Object-Oriented Programming with Object C》是一本深入探讨面向对象编程(OOP)与Objective-C语言的专业书籍。Objective-C是Apple开发的一种强大的、面向对象的编程语言,主要用于iOS和macOS的应用程序开发。这...
《Objective-C语言教程0220.zip》是一个包含Objective-C编程基础及实例的课程资源包。这个压缩包中,我们能够找到一系列与学习Objective-C语言相关的材料,包括图像和文本文件,旨在帮助初学者理解并掌握这门强大的...
Object-C(Objective-C)是苹果公司基于C语言开发的一种面向对象的编程语言,主要用于iOS和macOS平台的应用程序开发。它在C语言的基础上添加了Smalltalk风格的消息传递机制,使得面向对象编程更加灵活。本教程将帮助...
Object-C,作为苹果早期的开发语言,是基于C语言并扩展了Smalltalk式的消息传递机制。它的主要知识点包括: 1. **消息传递**:这是Object-C的核心特性,通过消息传递实现对象间的通信,如`[receiver method]`语法。...
Object-C是苹果公司为Mac OS X和iOS操作系统开发的应用程序编程语言,它是C语言的超集,融入了Smalltalk的面向对象特性。了解Object-C的基础语法和Cocoa框架对于开发苹果平台的应用至关重要。 **一、Object-C语法...
Object-C,全称Objective-C,是一种基于C语言的、面向对象的编程语言,由Stepanov和Moss在1983年为NextStep操作系统开发。苹果公司广泛使用Objective-C作为其iOS和macOS操作系统以及相关框架如Foundation和AppKit的...
Object-C是在C语言的基础上增加了面向对象的特性,其设计目标是为了提高程序的可维护性和代码复用性。 #### 二、GNUStep的安装 GNUStep是一个遵循GNU通用公共许可证的开源项目,提供了类似于苹果Cocoa框架的API集合...
总结来说,"Object-C语言相关项目的示例"涵盖了Objective-C的关键特性,包括类、消息传递、Category、协议、内存管理和Blocks,以及如何利用Foundation和UIKit框架进行应用开发。通过深入学习和实践这些示例,开发者...
Objective-C(Object-C)是苹果公司开发的一种面向对象的编程语言,主要应用于iOS和Mac OS X操作系统。它是C语言的超集,包含了Smalltalk风格的消息传递机制,因此它具有C语言的底层控制能力和Smalltalk的灵活性。在...
4. **扩展性**:Objective-C支持通过类别(Category)和协议(Protocol)来对现有类进行扩展,增加新的方法或功能。 5. **垃圾回收**:Objective-C支持手动内存管理和自动垃圾回收两种内存管理方式,后来引入的ARC...
Objective-C,简称ObjC,是苹果公司开发的一种面向对象的编程语言,它是C语言的超集,具有Smalltalk风格的消息传递机制。Objective-C主要用于iOS和macOS应用开发,是Apple平台的标准开发语言。本资料“Object-C/...
在Object-C中,你需要了解的关键概念还包括分类(Category)、协议(Protocol)和块(Block)。分类可以为已存在的类添加新的方法,而无需修改原始源代码。协议定义了一组可选的方法,类可以遵循协议以实现特定的...