我有一个关于子类化的问题。
我从第一个观点开始: 在我的.h文件中:
@interface viewAController : UIViewController
在我的.m文件中:
-(void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"Begin view");
udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *error = nil;
if (![udpSocket bindToPort:12345 error:&error]) //check ff of dit werkt!
{
NSLog(@"F you");
return;
}
NSLog(@"Derde line");
if (![udpSocket beginReceiving:&error])
{
NSLog(@"Screw you!");
return;
}
}
移植和开始接收顺利。 然后当我继承viewAController:
@interface viewBController : viewAController
在我的.m文件中:
-(void)viewDidLoad{
[super viewDidLoad];
}
我期待我的子类[viewBController]将显示所有的NSLog,因为我调用了超级viewDidLoad。
相反,它说:F你! 哦,我明白我只能绑定一次到端口,但我期待一个错误信息,这没有显示。所以我删除了绑定然后我得到了螺丝你,显然我不能说当我没有绑定到端口时开始接收。如果没有这两种方法,它可以正常工作,它会将所有内容打印出来。
问题: 我应该绑定吗?我实际上只需要监听端口12345,我应该以不同的方式实现它吗?
我应该在没有绑定且没有开始接受的情况下工作吗?我认为我更喜欢绑定,所以我不会听我的所有端口。
当我不绑定时,为什么我不能开始接受?
如何显示错误?因为它没有打印任何错误......
greetz
答案 0 :(得分:0)
你正在做的是对的。但我只有一个问题要问你是否已将派生的ViewController的对象添加到某个View中。 除非你不添加它,你不会得到你的超类的didLoad被解雇。 通过将派生视图的对象添加到SomeView进行检查。
答案 1 :(得分:0)
你做错了
NSLog("@Hi there!");
你必须使用
NSLog(@"Hi there!");
如果这是一个拼写错误(我希望是这样),你必须将你的子类添加到使用添加子视图或推送它的地方。