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

时间:2015-04-01 08:38:39

标签: ios objective-c xcode

我遇到了一个奇怪的问题,我需要调用名为void的{​​{1}}函数,该函数包含在另一个名为insertCommunication的类文件中,名为MBUser.m }。由于此功能不在ProdottoViewController.m但在ProdottoViewController,我需要执行这些步骤以正确导入课程,如果我错了,请纠正我:

  1. MBUser.m中导入.h的{​​{1}}个文件,如下所示:

    MBUser
  2. 如此创建ProdottoViewController.m #import "ProdottoViewController.h" #import "MBUser.h" @interface ProdottoViewController () { }

    @class
  3. MBUser

    中创建@class MBUser; /* This class declaration is placed between the #import(s) and the @Interface of ProdottoViewController.m*/ @property
    MBUser
  4. ProdottoViewController.m@property (strong, nonatomic) MBUser *userClass; - 对齐MBUser,在这种情况下,我在alloc函数中执行此操作:

    init
  5. 这段代码有效,编译和Xcode完全没有错误,但是当我尝试调用该函数时,即使viewDidLoad被正确分配,它也会返回- (void)viewDidLoad { [super viewDidLoad]; _userClass = [[MBUser alloc] init]; } [甚至是MBUser中的其他对象]正如你在这里看到的那样:

    enter image description here

    你能帮帮我吗?

    编辑:MBUser.m' nil方法

    MBUser

2 个答案:

答案 0 :(得分:0)

  1. 您必须以某种方式使 userClass 无效。要找出正在发生的事情,请在您的MBUser类中添加dealloc方法(- (void)dealloc)并在其中放置断点以检查它何时被解除分配。
  2. 您不需要 @class MBUser; 在您已导入该类的文件中。 @class 用于在头文件中转发声明类。

答案 1 :(得分:0)

解决方案是allocinit - 只在需要时才对MBUser类进行操作,而不是在viewDidLoad函数中。我在问题中发布的步骤是正确的。谢谢大家。