gpt4 book ai didi

ios - 在 Objective C 中找不到方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:41:16 24 4
gpt4 key购买 nike

我正在尝试在 objectiveC 中创建一个全局函数或方法。这样我就可以从我的任何 View Controller 调用它。

我已经查看了这篇文章:How to create global functions in Objective-C

所以我所做的是在 Xcode 6 中创建新文件并选择一个类别下拉列表。为我创建了这两个 *.h 和 *.m 文件。我在其中添加了名为 SaveWeatherDataNow 的方法

//NSObject+SaveWeatherData.h
#import <Foundation/Foundation.h>

@interface NSObject (SaveWeatherData)

+(void)SaveWeatherDataNow:(NSString *)XML;

@end

//NSObject+SaveWeatherData.m
#import "NSObject+SaveWeatherData.h"

@implementation NSObject (SaveWeatherData)

+(void)SaveWeatherDataNow:(NSString *)XML
{

NSLog(@"SaveWeatherDataNow XML lenght: %ld", [XML length]);
}

@end

现在在我的另一个 View Controller 中,如果我调用这个方法,那么编译器根本找不到它。我错过了什么?

//  v1CitiesAdd.m
#import "NSObject+SaveWeatherData.h"

@implementation v1CitiesAdd
...
...
-(IBAction) doneAction
{

...
[SaveWeatherData SaveWeatherDataNow:XML]; // Complier Error: Use of undeclared identifier SaveWeatherData

最佳答案

+ 更改为 -(在 (void) 前面):

-(void)SaveWeatherDataNow:(NSString *)XML;

这样,您就可以在 SaveWeatherData 对象中引用该方法。

不要忘记在头文件 (.h) 和类 (.m) 文件中更改它。

你也可以打电话

[NSObject SaveWeatherDataNow:XML];

留下 +。

===

当您使用 + 时,它是一个类方法。它在全局范围内工作,不了解也不关心单个对象。

当您使用 - 时,它是一个对象方法。它在特定对象内工作。

所以,如果有一个 Brick 类,

+(void) 粉碎;

会更改/更新要粉碎的每一 block 砖。

-(void) 粉碎;

会粉碎您发送该消息的特定砖 block 。

[myBrick1 粉碎];只会打碎一 block 砖。

[砸砖];会在全局范围内改变所有积木的东西。

关于ios - 在 Objective C 中找不到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28859306/

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