Ответ 1
Ваша установка выглядит так же, как и в UITableView, наследующем от UIScrollView. Протокол UITableViewDelegate наследуется от протокола UIScrollViewDelegate.
Я установил следующее, которое компилируется отлично:
// .h
@protocol ParentClassDelegate
-(NSString *) aDelegateMethod;
@end
@interface ParentClass : NSObject {
id delegate;
}
@property(nonatomic, assign) IBOutlet id <ParentClassDelegate> delegate;
@end
//.m
@implementation ParentClass
@synthesize delegate;
-(id) delegate{
return @"Parent delegate";
}//-------------------------------------(id) delegate------------------------------------
-(void) setDelegate:(id)someObj{
delegate=someObj;
}//-------------------------------------(id) setDelegate------------------------------------
@end
//.h
@protocol ChildClassDelegate <ParentClassDelegate>
-(NSArray *) anotherDelegateMethod;
@end
@interface ChildClass : ParentClass{
}
@property(nonatomic, retain) IBOutlet id <ChildClassDelegate> delegate;
@end
//.m
@implementation ChildClass
//@synthesize delegate;
-(id) delegate{
return @"childDelegate";
}//-------------------------------------(id) delegate------------------------------------
-(void) setDelegate:(id)someObj{
delegate=someObj;
}//-------------------------------------(id) setDelegate------------------------------------
@end
Не уверен, что вызывает вашу проблему. Я хотел бы отметить, что в заголовке протокол UITableViewDelegate выглядит следующим образом:
@protocol UITableViewDelegate<NSObject, UIScrollViewDelegate>
... поэтому, возможно, компилятор иногда любит вещи более четко.
Я бы предложил чистую и сборку. Это решает много проблем.