0

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

我从我的第一个视图开始:在我的 .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 端口,我应该以不同的方式实现吗?

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

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

我怎样才能显示错误?因为它没有打印任何错误...

问候

4

2 回答 2

0

您所做的是对的。但是我只有一个问题要问您是否已将派生 ViewController 的对象添加到某个 View。除非你不添加它,否则你的超类的 didLoad 不会被解雇。通过将派生视图的对象添加到 SomeView 来检查。

于 2012-05-14T12:47:38.457 回答
0

你这样做是错误的

NSLog("@Hi there!");

你必须使用

NSLog(@"Hi there!"); 

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

于 2012-05-14T13:01:02.360 回答