我的AppDelegate属性为null

时间:2014-02-21 17:37:42

标签: ios objective-c properties appdelegate

这可能是一个愚蠢的问题,但如果我的AppDelegate有一个变量定义如下:

@property (nonatomic, strong) NSString * m_sDevToken;

我也有一个方法:

- (NSString *)getDeviceToken;

在我的.m文件中,我执行以下操作:

@synthesize m_sDevToken;

我为m_sDevToken赋值如下:

m_sDevToken = [[[[deviceToken description]
                 stringByReplacingOccurrencesOfString:@"<"withString:@""]
                stringByReplacingOccurrencesOfString:@">" withString:@""]
               stringByReplacingOccurrencesOfString: @" " withString: @""];

我有这样的方法返回它:

- (NSString *)getDeviceToken
{
    return m_sDevToken;
}

我尝试在viewDidLoad的初始View Controller中访问它,如下所示:

BarMateAppDelegate * appDelegate = (BarMateAppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog(@"%@", [appDelegate getDeviceToken]);

现在,如果我在分配之后立即记录它,它正确的值,但在viewDidLoad方法中它返回(null)。

我对Objective-C有点新,但类似的作业似乎工作正常,所以我做错了什么?

有人可以向我解释为什么它会为空吗?

3 个答案:

答案 0 :(得分:1)

将其定义为:

@property (strong) NSString * m_sDevToken;

否则会被解除谴责。

答案 1 :(得分:0)

我猜错了什么,但没有足够的源代码可以确定。

无论哪种方式,将所有m_sDevToken替换为self.m_sDevToken都应该有所帮助。

self.m_sDevToken = [[[[deviceToken description]
                      stringByReplacingOccurrencesOfString:@"<"withString:@""]
                     stringByReplacingOccurrencesOfString:@">" withString:@""]
                    stringByReplacingOccurrencesOfString: @" " withString: @""];

- (NSString *)getDeviceToken
{
    return self.m_sDevToken;
}

要么这只是开始神奇地工作,否则你会收到错误。如果您收到错误发布错误。

答案 2 :(得分:0)

我根据maddy的输入自己解决了这个问题。由于didRegisterForRemoteNotificationsWithDeviceToken的延迟,我需要在其他地方设置值。调用didRegisterForRemoteNotificationsWithDeviceToken后,我将devToken设置为我对应用程序的设置对象。设置对象保持不变,稍后可在应用程序中使用。