`
zsjg13
  • 浏览: 139748 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

1.6 给自定义类添加Class Method

    博客分类:
  • ios
 
阅读更多

1、问题

在Objective-C中,你可以给类或对象发消息来完成任务。如果你想要你的自定义类能够响应消息,那就需要编写一个class方法。

 

2、解决方案

要添加class方法,你需要在头文件中添加forward声明。class方法以+开头,还要有一个返回类型,如(void),之后是一组参数描述符,数据类型,以及参数名。class方法要在类实现文件中实现,放在@implementation关键字后面。

 

3、原理

下面是一个class方法的forward declaration:

+(void) writeDescriptionToLogWithThisDate:(NSDate *)date;

 

然后到.m文件中实现该方法:

+(void)writeDescriptionToLogWithThisDate:(NSDate *)date{

    NSLog(@"Today's date is %@ and this class represents a car", date);

 

要使用该方法,你只需要向该Car类发一个消息,无需担心先要实例化一个对象。

[Car writeDescriptionToLogWithThisDate:[NSDate date]];

}

 

4、代码

Listing 1-10. Car.h 

#import <Foundation/Foundation.h> 

@interface Car : NSObject 

 

@property(strong) NSString *name; 

 

+(void)writeDescriptionToLogWithThisDate:(NSDate *)date; 

 

@end

======================================================

Listing 1-11. Car.m 

#import "Car.h" 

 

@implementation Car 

 

@synthesize name; 

 

+(void)writeDescriptionToLogWithThisDate:(NSDate *)date{ 

        NSLog(@"Today's date is %@ and this class represents a car", date); 

 

@end 

============================================================

Listing 1-12. main.m 

#import "Car.h" 

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

        @autoreleasepool { 

                [Car writeDescriptionToLogWithThisDate:[NSDate date]]; 

        } 

        return 0; 

}

 

class方法就像Java中的静态方法。

分享到:
评论

相关推荐

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    6.1.3 使用自定义的Car类 136 6.1.4 类和对象 139 6.1.5 源文件的存放 141 6.1.5 理解引用 143 6.1.7 null关键字 145 6.2 巧妙使用类中的属性 147 6.2.1 在类中给每个变量一个初始值 147 6.2.2 定义自己的...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    6.1.3 使用自定义的Car类 136 6.1.4 类和对象 139 6.1.5 源文件的存放 141 6.1.5 理解引用 143 6.1.7 null关键字 145 6.2 巧妙使用类中的属性 147 6.2.1 在类中给每个变量一个初始值 147 6.2.2 定义自己的...

    ZendFramework中文文档

    13.8. 自定义Feed和条目类 14. Zend_Filter 14.1. 简介 14.1.1. 什么是过滤器(filter)? 14.1.2. 过滤器的基本用法 14.1.3. 使用静态 get() 方法 14.2. 标准过滤器类 14.2.1. Alnum 14.2.2. Alpha 14.2.3. ...

    HttpClient以及获取页面内容应用

    1.6应用 1.6.1发送get请求获取网页内容 HttpClient client = new HttpClient(); //设置代理服务器地址和端口 //client.getHostConfiguration().setProxy("proxy_host_addr",proxy_port); //使用GET方法,如果...

    ASP.NET程序中常用的三十三种代码.txt

    //自定义异常处理类 using System; using System.Diagnostics; namespace MyAppException {  ///  /// 从系统异常类ApplicationException继承的应用程序异常处理类。  /// 自动将异常内容记录到Windows NT/...

    ASP.NET常用代码

    //自定义异常处理类 using System; using System.Diagnostics; namespace MyAppException { /// /// 从系统异常类ApplicationException继承的应用程序异常处理类。 /// 自动将异常内容记录到Windows NT/2000的应用...

    新版Android开发教程.rar

    己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算软件平台,组建了 google 主导的拥有众多产业界巨头的产业联盟,有利于 高效开发、降低成本。 � 由于是源...

    Java学习笔记-个人整理的

    {1.6}数据类型转换}{26}{section.1.6} {1.7}方法}{26}{section.1.7} {1.8}运算符}{27}{section.1.8} {1.8.1}自增运算}{28}{subsection.1.8.1} {1.8.1.1}Postincrement}{28}{subsubsection.1.8.1.1} {1.8.1.2}...

    freemarker总结

    有一种特殊的字符串称为raw字符串,被认为是纯文本,其中的\和{等不具有特殊含义,该类字符串在引号前面加r,下面是一个例子: ${r"/${data}"year""}屏幕输出结果为:/${data}"year" 转义 含义 ...

    JAVA核心知识点整理(有效)

    1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................

Global site tag (gtag.js) - Google Analytics