当在同一个类中定义方法时,为什么我会使用未声明的标识符'downloadDataFromURL'?

时间:2017-12-08 03:34:54

标签: objective-c

我已经编写了一个方法,我想从同一个类中的另一个方法重用但是我收到此错误消息并且我不明白为什么,如果在同一个类中声明它,它怎么可以未声明呢? / p>

h文件看起来像这样

string getSpecialCustomerAddress (Customer & _c)
{
  return _c.GetAge();
}

m文件如下

#import <Foundation/Foundation.h>
#import "AppDelegate.h"
#import "NWTillHelper.h"

@interface JoshuaWebServices : NSObject

+ (void)downloadDataFromURL:(NSURL *)url withCompletionHandler:(void (^)(NSData *))completionHandler;

- (void)downloadCollections;

@end

为什么我不能使用在同一个类中声明的方法?

1 个答案:

答案 0 :(得分:3)

您的方法需要接收器。与那些可以在那里调用的函数不同。必须通过类或类的实例来调用方法。在你的情况下,你应该使用一个类,因为它是一个类方法。

更改

[downloadDataFromURL:url withCompletionHandler:^(NSData *data) {
    // Make sure that there is data.
    if (data != nil) {
        self.xmlParser = [[NSXMLParser alloc] initWithData:data];
        self.xmlParser.delegate = self;

        // Initialize the mutable string that we'll use during parsing.
        self.foundValue = [[NSMutableString alloc] init];

        // Start parsing.
        [self.xmlParser parse];
    }
}];

[JoshuaWebServices  downloadDataFromURL:url withCompletionHandler:^(NSData *data) {
    // Make sure that there is data.
    if (data != nil) {
        self.xmlParser = [[NSXMLParser alloc] initWithData:data];
        self.xmlParser.delegate = self;

        // Initialize the mutable string that we'll use during parsing.
        self.foundValue = [[NSMutableString alloc] init];

        // Start parsing.
        [self.xmlParser parse];
    }
}];