こんなカテゴリーを作っています。
@interface NSObject (defaultSelector)
+(NSString *) defaultSelector;
-(NSString *)defaultSelector;
@end
次に、次のように使用しました。
-(void)prefetchShortcutWithTable: (Class) someNSManagedObjectClass forInputArray: (NSArray *) inputArray withDictCache: (NSMutableDictionary *) dictToSave
{
NSString * attribute = [someNSManagedObjectClass defaultSelector];
[self prefetchShortcutWithTable:NSStringFromClass(someNSManagedObjectClass) forAttribute:attribute forInputArray:inputArray withDictCache:dictToSave];
}
全体が機能します。しかし、コンパイラは someNSManagedObjectClass が NSObject のサブクラスになることをどのように認識しているのでしょうか?
-(void)prefetchShortcutWithTable: (Class) someNSManagedObjectClass forInputArray: (NSArray *) inputArray withDictCache: (NSMutableDictionary *) dictToSave
実際、 NSManagedObject のサブクラスのみを受け入れるように関数を書き直すにはどうすれば よいでしょうか?