首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何调用和使用包含在另一个类文件中的函数?

如何调用和使用包含在另一个类文件中的函数?
EN

Stack Overflow用户
提问于 2015-04-01 08:38:38
回答 2查看 73关注 0票数 0

我遇到了一个奇怪的问题,我需要从另一个名为void的类中调用一个名为insertCommunicationinsertCommunication函数,这个函数包含在一个名为MBUser.m的类文件中。由于这个函数不是在ProdottoViewController中,而是在MBUser.m中,所以我需要执行这些步骤才能正确导入类,如果我错了,请纠正我:

  1. .h中导入MBUserProdottoViewController.m文件,如下所示: #导入"ProdottoViewController.h“#导入"MBUser.h”@ ProdottoViewController ()接口{}
  2. 创建一个@class of MBUser,如下所示: @class MBUser;/*这个类声明放在ProdottoViewController.m*/的#import和@Interface之间。
  3. 创建@property of MBUser in ProdottoViewController.m @property (强的,非原子的) MBUser *userClass;
  4. allocinit-alize MBUser,在本例中,我是在viewDidLoad函数中这样做的:
  • (void)viewDidLoad {;_userClass = [MBUser alloc init];}

这段代码工作正常,编译和Xcode完全没有错误,但是当我试图调用函数时,它会返回nil,甚至MBUser中的其他对象,即使正确地分配了MBUser (如这里所示):

你能帮帮我吗?

编辑:MBUser.m的init方法

代码语言:javascript
复制
- (id)init {
    self = [super init];

    if (self) {
        dispatch_once(&onceToken, ^{
            dictCache = [[NSMutableDictionary alloc] init];
        });

        logined = NO;
        allowLogin = YES;
    }

    return self;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-17 13:30:03

解决方案是只在需要时使用allocinit-alize,而不是在viewDidLoad函数中使用MBUser类。不过,我在问题中贴出的步骤是正确的。谢谢大家。

票数 0
EN

Stack Overflow用户

发布于 2015-04-01 09:34:01

  1. 你必须以某种方式放弃你的userClass。要了解发生了什么,向您的- (void)dealloc类中添加dealloc方法(dealloc method,- (void)dealloc),并将其放置在断点上,以检查何时将其解除分配。
  2. 您不需要@class MBUser;在您已经导入该类的文件中。@class用于在头文件中前向声明类。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29386295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档