`
zsjg13
  • 浏览: 144584 次
  • 性别: 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中的静态方法。

分享到:
评论

相关推荐

    JDK1.6源码

    JDK 1.6的反射API包括Class类、Constructor类、Method类等。源码分析有助于理解如何动态调用方法、创建对象以及访问私有成员。 6. **异常处理** 深入源码,可以了解Java异常处理机制,包括try-catch-finally结构、...

    prototype1.6手册

    7. **Class 系统**:Prototype 引入了类的概念,允许创建有构造函数和原型链的类,如 `Function.prototype.create()` 和 `Class.create()`。 8. **JSON 支持**:Prototype 提供了 JSON 解析和序列化的方法,如 `...

    java jdk 1.6 src.zip 源码

    在Mac操作系统中,由于默认可能不包含这个源码文件,所以当开发者需要查看或分析Java标准库的源代码时,就需要手动添加`src.zip`。通过将这个压缩包解压并导入到IDE(如Eclipse或IntelliJ IDEA)中,开发者可以方便...

    JDK1.6帮助文档--英文版

    - **反射**:通过Class、Constructor、Method等类进行运行时类型检查和对象操作。 ### 3. 枚举与注解 JDK1.6引入了枚举(enum)类型,提供了一种更安全的方式来表示一组固定的常量,防止值的误用。同时,注解...

    ant-jakarta-bcel-1.6.jar.zip

    这个库包含了多种类和接口,如ClassGen、Method、Field等,它们提供了访问和操作Java字节码的方法。通过BCEL,开发者能够实现诸如性能优化、代码分析、类转换等复杂任务。例如,可以使用BCEL来插入或删除方法调用,...

    JDK1.6.02 API文档 手机版 适就于所有手机03

    - **Class类**:代表运行时的类信息,可以动态获取类的方法和字段。 - **Constructor/Method/Field**:分别表示类的构造函数、方法和字段。 7. **注解** - **@Override**:表明方法覆盖父类方法。 - **@...

    csharp language specification v3.0 pdf

    这个简单的程序展示了 C# 语言的基础结构:`using` 指令导入命名空间,类 (`class`) 定义,以及主方法 (`Main` 方法) 的定义。 ##### 1.2 程序结构 C# 程序由一个或多个命名空间组成,每个命名空间包含一系列类。...

    JDK_API_1_6_zh_CN.zip

    java.lang.reflect包提供了Class、Constructor、Method、Field等类来实现反射操作。 八、国际化 java.text和java.util包提供了日期时间、数字格式化、货币转换、消息资源管理等功能,支持全球化和本地化应用开发。 ...

    joda-time-1.6.2.jar

    &lt;bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"&gt; &lt;!-- 添加其他已经存在的转换器 --&gt; ``` 这段配置告诉Spring MVC使用Joda-Time的`...

    JDK_API_1_6

    - `Class类`: 代表类的对象,允许在运行时动态获取类的信息并创建对象。 - `Method类`: 代表类的方法,可以动态调用方法。 - `Constructor类`: 代表类的构造器,用于动态实例化对象。 8. **国际化** - `...

    Java面试宝典

    - **举例**: 对于自定义类,通常需要重写`equals`方法以便正确地比较对象内容。 **1.12 静态变量与实例变量的区别** - **知识点**: 静态变量属于类,所有对象共享同一份副本;实例变量属于对象,每个对象都有其独立...

    Mybatis拦截器介绍及分页插件

    其中,`com.example.MyInterceptor`是你自定义的拦截器实现类,`logLevel`是传递给`setProperties`方法的属性名,`DEBUG`是其对应的值。 #### 1.5 Mybatis可拦截的方法 Mybatis提供了多种类型的对象可以被拦截,...

    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 定义自己的...

    Mybatis拦截器介绍及分页插件示例

    在Mybatis框架中,拦截器(Interceptor)是一个重要的组件,它允许开发者在不修改框架核心逻辑的情况下,添加自定义的行为。例如,可以在SQL执行前后添加日志记录、性能监控等逻辑。本文将详细介绍Mybatis拦截器的...

    JSP开发之Spring方法注入之替换方法实现

    如果Bean中存在多个重载的方法,即方法名相同但参数类型或个数不同的方法时,可以通过在replaced-method元素下添加arg-type元素来指定要替换方法的具体参数类型: ```xml &lt;bean id="beanAReplacer" class=...

    java面试宝典

    - **静态嵌套类(Static Nested Class)**:类似于内部类,但不需要外部类实例。 **1.27 内部类可以引用它的包含类的成员吗?有没有什么限制?** 内部类可以直接访问外部类的成员,即使它们是私有的。但外部类不能...

    Java基本环境搭建

    通过这次实验,我们不仅掌握了Java环境的搭建,还理解了Java程序的基本结构,包括公共类(public class)、主方法(main method)以及输出语句(System.out.println)。同时,也学会了如何利用IDE(Eclipse)进行更...

    javaweb文档

    - **方法调用**:介绍如何使用Method类来调用类的方法。 - **非公有方法**:讨论如何调用类的非公有方法。 #### 1.14 用反射方式反射类中的 main 方法 - **反射调用**:演示如何使用反射技术调用类中的main方法。 ...

    统计学与R读书笔记(第六版) 免积分下载

    - **查看类定义和继承情况**:介绍了如何使用`class()`和`superClass()`函数来查看类的定义和继承结构。 - **创建类的实例与初始化**:讲解了如何创建类的实例以及初始化的过程。 - **定义和查看使用新类的函数方法*...

Global site tag (gtag.js) - Google Analytics