Я хочу предоставить методы, используемые в нескольких контроллерах представления, вызываемых в моих методах делегатов.
Например, у меня есть некоторые функции CloudKit (я добавил это в свою собственную среду, но я не думаю, чтоэто важно), где я хочу предоставить некоторые записи о сбоях.Ранее я имел функцию crashLog в каждом из моих контроллеров представления, которая работала нормально, но у меня много дублирующегося кода.
Поэтому я хотел бы вместо этого создать категорию с этими методами.
Однако у меня возникают трудности с тем, чтобы мои методы делегата могли видеть эти методы категории.
Вот мой код ..
UIViewController + CloudKitDelegates.h
@interface UIViewController (CloudKitDelegates) <iCloudDBDelegate>
@property (weak,nonatomic) id<iCloudDBDelegate>iCloudDBDelegate;
-(void)crashLog:(NSString*)message, ...;
@end
UIViewController+ CloudKitDelegates.m
#import "UIViewController+CloudKitDelegates.h"
@implementation UIViewController (CloudKitDelegates)
@dynamic iCloudDBDelegate;
-(void)crashLog:(NSString*)message, ...
{
va_list args;
va_start(args, message);
NSLog(@"%@", [[NSString alloc] initWithFormat:message arguments:args]);
va_end(args);
}
@end
h file - мой вызывающий контроллер представления (например, My View Controller)
#import "UIViewController+CloudKitDelegates.h"
m file - метод делегата
-(NSString*)getDBPath
{
[self.iCloudDBDelegate crashLog: @"testing"];
Fromпри этом вызове я получаю сообщение об ошибке ...
'NSInvalidArgumentException', reason: '-[MyViewController crashLog:]:
unrecognized selector sent to instance
Ошибка показывает, что у моего вызывающего контроллера представления MyViewController нет метода crashLog, который есть в моей категории.
Есть идеи, где я иду не так?