【问题标题】:Objective C calling method from another callObjective C 从另一个调用调用方法
【发布时间】:2013-11-25 04:51:12
【问题描述】:

我创建了一个类 AuthService

在 AuthService 声明中我有这个

- (MSClient *) getClient;

在实现中(.m 文件)我有这个

- (MSClient *) getClient{
    client =[MSClient clientWithApplicationURLString:@"XXXXXXX/"
                                      applicationKey:@"XXXXXXX"];
    return client;
}

现在我正在尝试在单击按钮期间在视图控制器中获取 MSClient 的实例,如下所示。

AuthSerivce 类首先在 .h 文件中这样初始化

@property (strong, nonatomic) AuthService *authService;

client 被声明为 MSClient 对象并合成如下

@synthesize client;

然后我尝试从 AuthService 类创建一个客户端对象(是的,我在视图控制器中引用了 AuthService.h)

client = [authService getClient];

但我的问题是,getClient 总是返回 nil

我确定我在基本目标 c OOP 概念中遗漏了一些东西。请纠正我。

【问题讨论】:

  • 你是如何初始化 authService 的??
  • @MidhunMP 嘿,我已经有了上面的getClient 方法
  • @MrjComics:我错了,请发clientWithApplicationURLString方法。
  • ` @property (strong, nonatomic) AuthService *authService;` 像这样初始化
  • @MidhunMP 谢谢。 clientWithApplicationURLString 是来自 Azure sdk 的框架方法。

标签: ios objective-c oop ios7 azure-mobile-services


【解决方案1】:

声明一个属性不会初始化它。所以这一行,

@property (strong, nonatomic) AuthService *authService;

不会创建 AuthService 的实例,您需要先分配 init 一个,然后才能调用 getClient。

【讨论】:

  • 谢谢,这是有道理的。我怀疑错过了一些基本的 OOP 内容。
【解决方案2】:

authService 为空(无指针)。您需要初始化 authService。 @property (strong, nonatomic) AuthService *authService 未初始化;它的声明。

你需要像这样初始化 authService = [[AuthService alloc] init];

向 nil 对象发送消息,在您的情况下为 [authService getClient],将始终返回 nil。 Objective-C 的基础知识。 :P

【讨论】:

    【解决方案3】:

    你可能需要在你的视图中调用它确实加载

    authService = [[AuthService alloc]init];
    

    这可能会。

    【讨论】:

    • 感谢您的回答清晰准确,但@rdlmar 已经回答。会接受他的回答。感谢您的时间和精力。
    猜你喜欢
    • 1970-01-01
    • 2015-07-10
    • 2023-03-15
    • 2013-03-05
    • 1970-01-01
    • 2016-04-25
    • 2023-03-29
    • 2015-08-01
    • 1970-01-01
    相关资源
    最近更新 更多