我在Objective C中很新手,雖然我有一些Java反射背景。查找類方法的選擇器
在這裏,我有一個經典的類方法findAll,它可以從數據庫中找到所有的域對象。類UNIVERS從直接繼承的domainObject
@interface DomainObject : NSObject
- (NSString *) execute : (NSString*) method withJson:(NSString*)json;
+ (NSString*)findAll: (NSString*)json;
@end
@implementation DomainObject
- (NSString *) execute: (NSString*) method withJson:(NSString*)json{
method = [NSString stringWithFormat:@"%@%@", method, @":"];
//method is 'findAll:'
NSString* result = [ self performSelector:
NSSelectorFromString(method) withObject:json];// Error here
return result;
}
@end
的代碼是工作時的findAll不是一個類的方法(即-findAll聲明),但現在我有錯誤:NSInvalidArgumentException - [UNIVERS的findAll:] 很明顯,運行時正在尋找一個實例方法。
任何想法找到我的類方法?
我不認爲對初學者的很好的解釋是offtopic :) –
'return [[[[self class] alloc] init] autorelease];'應該是'return [[[self alloc] init] autorelease] ;'。 '[self class]'和'self'完全一樣mehtod – user102008
@ user102008:你是對的。我責備複製和粘貼。 ;)修正。 – Regexident