• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 在 Objective C 中找不到方法

[复制链接]
菜鸟教程小白 发表于 2022-12-13 10:25:33 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试在 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)SaveWeatherDataNowNSString *)XML;

@end

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

@implementation NSObject (SaveWeatherData)

+(void)SaveWeatherDataNowNSString *)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



Best Answer-推荐答案


+改成-(在(void)前面):

-(void)SaveWeatherDataNowNSString *)XML;

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

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

你也可以打电话

[NSObject SaveWeatherDataNow:XML];

留下+号。

===

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

当你使用 - 时,它是一个对象方法。它适用于特定对象。

所以,如果有一个 Brick 类,

+(void) 粉碎;

会改变/更新每一 block 要砸的砖。

-(void) 粉碎;

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

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

[碎砖];会改变所有砖 block 的全局性。

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap