Похоже, что TCPEndpoint имеет частную переменную экземпляра, называемую "делегат", и, поскольку она является закрытой, этот подкласс не может получить к ней доступ.
Если вам нужно, чтобы TCPConnection имел отдельный объект делегата, я бы порекомендовал следующее (исключая ненужные вещи):
//TCPConnection.h
@interface TCPConnection : TCPEndpoint {
id<TCPConnectionDelegate> _connectionDelegate;
}
@property (assign) id<TCPConnectionDelegate> delegate;
@end
//TCPConnection.m
@implementation TCPConnection
@synthesize delegate=_connectionDelegate;
...
@end
По сути, синтаксис свойств позволяет синтезировать свойство, соответствующее переменной экземпляра, имя которой не совпадает с именем свойства, используя оператор simple =.