持续''可能不会回应+方法

问题描述:

我发现了一堆关于这个问题的帖子,实际上设法删除了我从这些中获得的警告之一,但是一个持续存在。持续'<class>'可能不会回应+方法

一些背景:我在学习Objective C的创造货币转换器作为一个练习

我率类代表的货币可转换为或看起来像这样的速度:

Rate.h

// 
// Rate.h 
// Currency Converter 
// 
// Created by Matthew Spence on 08/06/2010. 
// Copyright 2010 __MyCompanyName__. All rights reserved. 
// 

#import <Cocoa/Cocoa.h> 


@interface Rate : NSObject { 
NSString* code; 
NSString* description; 
float rate; 
} 
- (id)init; 
- (id)initTest; 
- (id)initWithCode:(NSString*)code description:(NSString*)description rate:(float)rate; 
@property(retain) NSString* code; 
@property(retain) NSString* description; 
@property(readwrite) float rate; 
@end 

Rate.m

// 
// Rate.m 
// Currency Converter 
// 
// Created by Matthew Spence on 08/06/2010. 
// Copyright 2010 __MyCompanyName__. All rights reserved. 
// 

#import "Rate.h" 


@implementation Rate 
@synthesize code; 
@synthesize description; 
@synthesize rate; 
- (id)init { 
return self; 
} 

- (id)initTest { 
return self; 
} 

- (id)initWithCode:(NSString*)codeA description:(NSString*)descriptionA rate:(float)rateA { 
self.code = codeA; 
self.description = descriptionA; 
self.rate = rateA; 
[self init]; 
return self; 
} 
@end 

警告发生在这里ExchangeRates持有率矩阵的单例类:

ExchangeRates.m

// 
// ExchangeRates.m 
// Currency Converter 
// 
// Created by Matthew Spence on 02/06/2010. 
// Copyright 2010 __MyCompanyName__. All rights reserved. 
// 

#import "ExchangeRates.h" 
#import "SynthesizeSingleton.h" 
#import "Rate.h" 
#import "NSString+CVS.h" 


@implementation ExchangeRates 
@synthesize matrix; 
synthesize_singleton(ExchangeRates); 
- (id)init { 

self = [super init]; 
self.matrix = [NSMapTable init]; 
    if (self) { 
    NSError *error = nil; 
    NSString *matrixString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://rss.timegenie.com/forex.txt"] encoding:NSUTF8StringEncoding error:&error]; 
    NSArray *matrixArray = [matrixString csvRows]; 
    for(NSArray *rateArray in matrixArray) { 
     Rate *rate = [Rate initWithCode:[rateArray objectAtIndex:0] description:[rateArray objectAtIndex:1] rate:[rateArray objectAtIndex:2]]; 
     [self.matrix setObject:rate forKey:[rateArray objectAtIndex:0]] ; 
     NSLog(@"my ns string = %@", [rateArray objectAtIndex:0]); 
    } 
    } 

    return self; 
} 
@end 

就行了:

Rate *rate = [Rate initWithCode... 

警告:

'Rate' may not respond to '+initWithCode:description:rate:' 

由于我明白它通常是由于未在头文件或头文件中声明的方法而导入的,但是正如你所看到的我已经完成了这两个。

你应该初始化ObjC实例作为

Rate* rate = [[Rate alloc] initWithCode:...]; 
//     ^^^^^ 
+0

不应星号上的变量不声明? (来自php的背景,仍然得到指针的头轮想法) – msaspence 2010-06-10 10:46:34

+0

@user:没关系。 – kennytm 2010-06-10 11:11:26