gpt4 book ai didi

iphone - 如何从另一个类文件调用函数

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

我非常熟悉编写基于 VB 的应用程序,但对 Xcode(和 Objective C)还是个新手。我已经浏览了网络上的大量教程,了解了基础知识以及如何与 Interface Builder 交互等。但是,我确实在 C 语言的一些基本概念上遇到了困难,对于您能提供的任何帮助,我将不胜感激。这是我的问题...

我有一个简单的 iPhone 应用程序,它有一个 View Controller (FirstViewController) 和一个带有关联头文件和类文件的 subview (SecondViewController)。

在 FirstViewController.m 中定义了一个函数

@implementation FirstViewController

- (void) writeToServer:(const uint8_t *) buf {
[oStream write:buf maxLength:strlen((char*)buf)];
}

功能是什么并不重要。

我想在我的 SecondViewController 中使用这个函数,所以在 SecondViewController.m 中我导入 FirstViewController.h

#import "SecondViewController.h"
#import "FirstViewController.h"

@implementation SecondViewController

-(IBAction) SetButton: (id) sender {
NSString *s = [@"Fill:" stringByAppendingString: FillLevelValue.text];
NSString *strToSend = [s stringByAppendingString: @":"];
const uint8_t *str = (uint8_t *) [strToSend cStringUsingEncoding:NSASCIIStringEncoding];
FillLevelValue.text = strToSend;

[FirstViewController writeToServer:str];
}

最后一行是我的问题所在。XCode 告诉我 FirstViewController 可能不会响应 writeToServer。当我尝试运行该应用程序时,它会在调用此函数时崩溃。

我想我并没有完全理解如何共享函数,更重要的是,类之间的关系。

在理想的世界中,我会创建一个全局类来放置我的函数并根据需要调用它们。

非常感谢您提出的任何建议。

最佳答案

在你的方法的声明中:

- (void) writeToServer:(const uint8_t *) buf;

声明开头的 - 表示它是一个即时方法。这意味着,您必须创建类的实例才能调用它。如果有 +,则该方法将是一个类方法,您可以按照在代码中的方式调用它。

示例:

@interface MyClass
{ }
- (void) myInstanceMethod;
+ (void) myClassMethod;
@end

然后在某个函数中:

[MyClass myClassMethod]; // This is ok

//[MyClass myInstanceMethod]; // this doenst't work, you need an instance:

MyClass *theInstance = [[MyClass alloc] init];
[theInstance myInstanceMethod];

关于iphone - 如何从另一个类文件调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2696942/

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