iPhone中的类方法和委托方法有什么不同

时间:2010-07-06 03:10:23

标签: objective-c

我对iPhone应用程序有疑问。我是iPhone应用程序的绿色。当我从apple开发者网站(online version)阅读文档(PDF)时。我发现该文档总是提到图书馆的不同方法。

1)类方法

2)实例方法

3)委托方法

我理解实例方法的用法和含义,它由实例调用。

让我们说代理方法是connection:didReceiveAuthenticationChallenge和类方法sendSynchronousRequest:retruningResponse:error:

但是,我不了解类方法和委托方法之间的差异。是全班的班级方法吗?还是整个项目?代表意味着什么?在修改委托的内容后,我应该在哪里放置代码?我该如何调用该方法?

任何人都可以帮助我。非常感谢你。

关于委托方法的另一个问题。我不知道如何解决问题。请帮我。谢谢。 HTTP status code = 0 (iPhone) (objective c)

3 个答案:

答案 0 :(得分:3)

假设您有一个类Foo及其实例Foo* foo

然后,类方法是一个发送到类的方法:

     [Foo classMethod];

虽然实例方法是发送到实例的方法:

     [foo instanceMethod];

委托方法是类实例调用的方法。因此,您通常使用实例Delegate实现另一个类Delegate* delegate,然后执行

    [foo setDelegate:delegate];

然后,对象foo在适当的时间调用delegate的委托方法:

    [delegate delegateMethod];

这是一种从系统API接收事件的方法。

答案 1 :(得分:2)

Apple提供了关于Objective-C和Cocoa基础知识的大量文档 - 如果有疑问,这应该是您的第一站。

The Objective-C Programming Language - Class Objects

  

[...]类定义可以包括专门用于类对象类方法的方法,而不是实例方法。类对象从层次结构中它上面的类继承类方法,就像实例继承实例方法一样。

Cocoa Fundamentals Guide - Delegates and Data Sources

  

委托是一个对象,当该对象遇到程序中的事件时,该对象代表另一个对象或与另一个对象协同工作。
  委托对象通常是响应者对象 - 即从Application Kit中的NSResponder或UIKit中的UIResponder继承的对象 - 响应用户事件。委托是委托对该事件的用户界面进行控制的对象,或者至少要求以特定于应用程序的方式解释该事件。

The Objective-C Programming Language - Protocols中的一些相关背景:

  

类和类接口声明与特定类关联的方法 - 主要是类实现的方法。另一方面,非正式和正式协议声明独立于任何特定类的方法,但任何类,也许许多类可能实现这些方法。

答案 2 :(得分:1)

委托方法是在类委托协议中定义的方法。它们被添加到您的类中,但您的类必须具有委托协议的对象。它们通常由对象使用,但您必须为对象定义。 NSTableView和UITableView使用委托方法来填充其数据。类方法只是您在界面中定义的方法。