gpt4 book ai didi

objective-c - 从其他类调用方法没有任何作用?

转载 作者:行者123 更新时间:2023-12-03 17:58:18 25 4
gpt4 key购买 nike

我有一个名为 MainMenu 的类,它有一个名为 switchViews 的方法,有 2 个参数:一个 NSWindow 和一个 NSView。

然后我有了 AppDelegate,我想在“applicationDidFinishLaunching”中使用此方法。

因此,在 AppDelegate.h 中,我导入了 MainMenu.h,在 AppDelegate.m 中,我使用如下:

MainMenu *theMainMenu = [[MainMenu alloc]] init];
[theMainMenu switchViews:param1:param2;

没有警告或错误,它只是不调用该方法。

如果我复制并粘贴该方法而不是调用它,它会正常工作,因此这不是变量的问题,如果该方法位于不同的类中,似乎只是运行该方法时出现错误?

任何帮助将不胜感激。

提前致谢

切换 View 方法:

- (void)switchViews:(NSWindow*)mainWindow:(NSView*)newView {
NSView *dummyView;
[theMainWindow setContentView:dummyView];
[theMainWindow setContentSize:newView.frame.size];
[theMainWindow setContentView:newView];
}

编辑:抱歉,大家,这只是一个错字。

解决方案:我在方法调用中使用了错误的参数。下面是工作代码:

- (void)switchViews:(NSWindow*)mainWindow:(NSView*)newView {
NSView *dummyView;
[mainWindow setContentView:dummyView];
[mainWindow setContentSize:newView.frame.size];
[mainWindow setContentView:newView];
}

最佳答案

MainMenu *theMainMenu = [MainMenu alloc[ init]];

如果这是您的代码,那么它甚至不会运行,因为构建失败,因为该代码无效。

假设您的实际代码不包含语法错误,没有发生任何事情通常意味着您向nil发送了消息。 -[MainMenu init] 返回了 nil,或者 switchViews:: 的实现尝试向它没有的对象发送消息.

假设您在 -[MainMenu init] 中没有任何返回 nil 的语句,则后一种情况更有可能。确保它创建了它需要的任何对象,或者,如果您的意思是基于 Nib ,请确保您已连接所有 MainMenu 对象的导出,并且您没有忘记加载 Nib 。

编辑:

- (void)switchViews:(NSWindow*)mainWindow:(NSView*)newView {
NSView *dummyView;
[theMainWindow setContentView:dummyView];
[theMainWindow setContentSize:newView.frame.size];
[theMainWindow setContentView:newView];
}

您将该方法的第一个参数变量命名为 mainWindow,但随后将消息发送到 theMainWindow

如果 MainMenu 对象有一个名为 theMainWindow 的 socket ,请确保它已连接,并删除多余的第一个参数。或者,关闭 socket (或任何theMainWindow)并使用mainWindow

此外,由于 AppDelegate(出于某种原因)将窗口传递给 MainMenu 对象,请确保 AppDelegate 实际上具有该窗口。首先检查 AppDelegate 代码中“param1”的值。

关于objective-c - 从其他类调用方法没有任何作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10195211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com