`
supermind
  • 浏览: 13737 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Object-C学习(四)

 
阅读更多
引用:http://blog.csdn.net/huanglx1984/article/details/4299965


我们之前说到Objective-C 是一种很好的面向对象的语言,和C++ 和Java 相比,Objective-C 有一些自己独特的东西,下面我们来简单的介绍一下。



1)Category

回想一下,在C++ 中,如果我们想继承一个类,给它添加一些新的功能,我们需要什么?当然是我们需要得到这个类的源代码。但是在Objective-C 中,由于有了这个Category 的概念,我们可以在没有源代码的情况下,为一个已经存在的类添加一些新的功能,比如:



// DisplayMath.h


@interface Rectangle(Math)

- (int) calculateArea;


- (int) calculatePerimeter;


@end




// DisplayMath.m

@implementation Rectangle(Math)

- (int) calculateArea {

    return width*height;


}

- (int) calculatePerimeter {

    return 2*(width+height)


}


@end



这里,使用了之前定义的Rectangle 类,我们想为它添加两个功能:计算面积和周长。即使没有Rectangle 类的源代码,我们也可以通过Category 创建Rectangle 的子类。

使用Category的时候,需要注意两个地方:

1) 只能添加新的方法,不能添加新的数据成员

2)Category 的名字必须是唯一的,比如这里,就不允许有第二个Math 存在。



如何使用:

int main( int argc, char* argv[] ) {

    Rectangle *rect = [[Rectangle alloc] initWithWidth: 5 andHeight:10];

    [rect calculateArea];


    [rect release];


}




2)如何创建私有方法

我们知道可以使用@private来声明私有变量,但是如何声明私有方法呢?

Objective-C 中并没有什么关键词来修饰方法,如果我们想让某个方法不被其他的类所见,唯一的方法就是不让这个方法出现在头文件中。比如:

// MyClass.h


#import <Foundation/NSObject.h>

@implementation MyClass

- (void) sayHello;


@end




// MyClass.m

#import "MyClass.h"

@implementation MyClass

- (void) sayHello {

    NSLog(@"Hello");


}


@end





@interface MyClass(Private)

- (void) kissGoodbye;

@end


@implementation MyClass(Private)

- (void) kissGoodbye {

    NSLog(@"kissgoodbye");


}


@end



怎么样,看到了Category 的应用么?是的,利用Category 可以方便的实现“私有”方法。




3)Protocol

在Objective-C 中,Protocol 的概念很象Java 中的interface 或者C++ 中的virtual class 。

来看下面这个例子:

@protocol Printing

- (void) print;


@end




// MyDate.h

@interface MyDate: NSObject <Printing> {

    int year, month, day;


}

- (void) setDateWithYear: (int)y andMonth: (int)m andDay: (int)d;


@end




// MyDate.m

#import <stdio.h>

#import "MyDate.h"

@implementation MyDate

- (void) setDateWithYear: (int)y andMonth: (int)m andDay: (int)d {

    year = y;

    month = m;

    day = d;


}

- (void) print {

   printf( "%4d-%2d-%2d", year, month, day );


}


@end



我们首先声明了Printing 协议,任何遵守这个协议的类,都必须实现print 方法。在Objective C 中,我们通过<>来表示遵守某个协议。当某个类声明要遵守某个协议之后,它就必须在.m文件中实现这个协议中的所有方法。

如何使用:

int main( int argc, char* argv[] ) {

    MyDate * dat = [[MyDate alloc] init];

    [dat initDateWithYear:1998 andMonth:09 andDay:01];

   

    id<Printing> var = dat;

    [var print];




    if( [dat conformsToProtocol:@protocol(Printing)] == YES ) {} // true





    [dat release];


}



注意两个地方:1)使用id<Printing> 作为类型,而不是象C++中,使用Printing* var; 2)conformsToProtocol 类似于之前所说的respondsToSelector ,用于动态检查某个对象是否遵守某个协议。

分享到:
评论

相关推荐

    基于Object-C语言实现列表选择(项目源码).rar

    Object-C语言基础: 学习Object-C语言的基本语法和特性,了解Objective-C编程范式和iOS开发规范。 列表选择功能实现: 掌握实现iOS应用中列表选择功能的方法和技巧,包括列表的展示、数据的加载和选择状态的管理等...

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

    这篇文章为您呈现了一份详尽的Object-C语言学习资源概览,旨在帮助初学者和经验丰富的开发者系统地学习Object-C编程,并通过实践案例和项目资源提升实际编程能力。 文章首先聚焦于Object-C语言教程,这是学习Object...

    object-c学习路线

    学object-c的路线,可以借鉴一下,有个大体方向才是最好的学习方法

    Object-C 学习文档pdf

    该压缩文档包括了Object-C学习的两大经典书籍,《Object-C程序设计》、《Object-C基础教程》。建议先学习第一本书,然后学习第二本书。如果有c/c++的基础,学起来会非常快的。由于本人没什么下载积分,就厚着脸向...

    object-c学习

    对于初学者是一个好的文档,在你两个小时的时间里就可以对语法有个组基本的了解。

    Object-Cios苹果app开发入门object-c例子demo14个实例 一般编程问题

    ios苹果app开发入门,object-c,例子,demo,14个实例 初学者难得的学习实例 【实例截图】 【核心代码】 归档 ├── AirPrinter │ ├── AirPrinter │ │ ├── AirPrinter-Info.plist │ │ ├── AirPrinter...

    Object-c初学者文档

    Object-c初学者文档,学完就可以开发ios了!完全没压力

    object-c 解析显示 MS PPT

    object -c 解析 MS PPT 希望给大家一个学习思路。

    Object-C-关于Object-C的学习介绍了解

    Object-C

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

    适用于Object-C初学者,里面有初学者相关的资料及相关的源码

    2024年Object-C快速入门.zip

    从Object-C的介绍和特点开始,逐步介绍了如何学习Object-C、Object-C的实际应用场景,以及Object-C的高级特性,如内存管理、多线程编程、设计模式和现代实践。此外,博客还提供了学习资源和进阶建议,并强调了加入...

    Object-C 学习笔记

    Object-C 学习笔记 自己整理的 适合初学者

    Object-C Programming

    Object-C Programming 前面7章的学习笔记,如果觉得好可以下载原本进行学习

    Learning iOS Programming 3rd Edition-- object-c 和 xcode4的学习文档

    学习iOS,最直接的方式就是买一台macBook pro,然后下载xcode,再挑选一本合适自己的ios入门书籍,object-c的学习过程中,第一要接触的ide还是xcode,或许网上有许多介绍xcode的资料,也有许多object-c学习的书籍,...

    object-c学习笔记

    本人是刚刚开始接触到OBJECT-C ,这是我在第一次学习object-C 是的学习笔记,请大家分享,赐教

    Object-C的教程.txt

    以下是一个简要的Object-C教程框架,帮助你了解学习Object-C所需的基本步骤和内容: 一、Object-C基础语法 变量与数据类型:了解Object-C中的变量声明和数据类型,包括基本数据类型(如int、float等)和对象类型...

    Object-C学习大纲.pdf

    Object-C学习大纲

    object-c学习教程PPT

    objectcC学习资料汇总,PPT素材,基础教程,Xcode学习

    学习OBJECT-C必看

    你是刚咬苹果的新鲜人吗? 不知如何上手也没人教你吗? 这裡有一步步图文并茂的教学,让你也可以轻鬆上手Mac OSX !!

    Object-C编程之道

    学习前最好有C语言基础和object-c语言基础

Global site tag (gtag.js) - Google Analytics