我有一个关于子类的问题。
我从我的第一个观点开始:在我的 .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!");
如果这是一个错字(我希望是(,你必须使用添加子视图或推送它的地方添加你的子类。