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中的静态方法。
相关推荐
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 定义自己的...
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 定义自己的...
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. ...
1.6应用 1.6.1发送get请求获取网页内容 HttpClient client = new HttpClient(); //设置代理服务器地址和端口 //client.getHostConfiguration().setProxy("proxy_host_addr",proxy_port); //使用GET方法,如果...
//自定义异常处理类 using System; using System.Diagnostics; namespace MyAppException { /// /// 从系统异常类ApplicationException继承的应用程序异常处理类。 /// 自动将异常内容记录到Windows NT/...
//自定义异常处理类 using System; using System.Diagnostics; namespace MyAppException { /// /// 从系统异常类ApplicationException继承的应用程序异常处理类。 /// 自动将异常内容记录到Windows NT/2000的应用...
己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算软件平台,组建了 google 主导的拥有众多产业界巨头的产业联盟,有利于 高效开发、降低成本。 � 由于是源...
{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}...
有一种特殊的字符串称为raw字符串,被认为是纯文本,其中的\和{等不具有特殊含义,该类字符串在引号前面加r,下面是一个例子: ${r"/${data}"year""}屏幕输出结果为:/${data}"year" 转义 含义 ...
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................