在 viewDidLoad 中的子类之后,[super viewDidLoad] 被调用,但方法不会被执行



我有一个关于子类的问题。

我从我的第一个观点开始:在我的 .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;
}   
}

移植和开始接收进展顺利。然后当我子类视图A主计长时:

@interface viewBController : viewAController

在我的 .m 文件中:

-(void)viewDidLoad{
[super viewDidLoad]; 
} 

我希望我的子类[viewBController]将显示所有NSLogs,因为我调用超级viewDidLoad。

相反,它是在说:F你!Oke 我知道我只能绑定一次到端口,但我期待错误消息,这没有显示。

所以我删除了绑定,然后我得到了 Screwyou,显然我不能说当我不绑定到端口时开始接收。如果没有这两种方法,它就可以正常工作,它可以打印出父级的所有内容。

问题:我应该绑定吗?我实际上只需要侦听端口 12345,我应该以不同的方式实现吗?

我应该在没有约束和没有开始接收的情况下工作吗?我想我更喜欢绑定,这样我就不会听我所有的端口。

为什么我不绑定就不能开始接收?

如何显示错误?因为它没有打印任何错误...

问候语

你正在做的事情是对的。但是我只有一个问题要问你是否已经将派生的ViewController的对象添加到了某个视图中。除非你不添加它,否则你不会得到你的超类被解雇的 didload。通过将派生视图的对象添加到某个视图进行检查。

这是你做错的

NSLog("@Hi there!");

你必须使用

NSLog(@"Hi there!"); 

如果这是一个错字(我希望是(,你必须使用添加子视图或推送它的地方添加你的子类。

最新更新