gpt4 book ai didi

iphone - 如何从 objective-c 类调用 .mm 文件上的方法

转载 作者:行者123 更新时间:2023-11-30 04:29:19 25 4
gpt4 key购买 nike

我正在开发一个 iPhone 应用程序。我需要在 .mm 文件上调用一个方法。这是问题的简化版本:

ViewHelper.h

- (void)testMtd;

ViewHelper.mm(注意这是.mm)

- (void)testMtd{
NSLog(@"Call reached mm");
}

SomeViewController.m(为清楚起见省略了对 ViewHelper.h 的导入)

- (void)someCallerMtd{
NSLog(@"before");
[viewHelper testMtd]; //call does not work
NSLog(@"after");
}

我在日志中看到了“之前”和“之后”,但是“调用到达 mm”从未被打印出来。在 .mm 文件中调用 obj c 方法是否有特殊规则?我在这里错过了什么?

最佳答案

首先,它与.mm文件无关,它仍然是objective-c clss。其次,您的错误是没有分配 ViewHelper

解决方案是分配您的 ViewHelper 或公开制作 (void)testMtd。取决于你的需要。

要么改变你的SomeViewController.m:

- (void)someCallerMtd{
NSLog(@"before");
viewHelper = [[ViewHelper alloc] init];
[viewHelper testMtd];
[viewHelper release];
NSLog(@"after");
}

或更改您的 ViewHelper :

//ViewHelper.h
+ (void)testMtd;

//ViewHelper.mm
+ (void)testMtd{
NSLog(@"Call reached mm");
}

- (void)someCallerMtd{
NSLog(@"before");
[ViewHelper testMtd]; //remember to use ViewHelper class. not viewhelper.
NSLog(@"after");
}

关于iphone - 如何从 objective-c 类调用 .mm 文件上的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9452343/

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