【发布时间】:2015-07-20 18:28:48
【问题描述】:
我正在尝试使用 Parse.com SDK 实现 iOS 推送通知。 问题是,有时推送通知不会在没有任何错误日志的情况下发送。我已将代码更改为:
- (IBAction)send:(id)sender {
PFQuery *usernameQuery = [PFUser query];
[usernameQuery whereKey:@"objectId" containedIn:self.recipients];
PFQuery *pushQuery = [PFInstallation query];
[pushQuery whereKey:@"user" matchesQuery:usernameQuery];
PFPush *push =[[PFPush alloc] init];
[push setQuery:pushQuery];
[push setMessage:[NSString stringWithFormat:@"%@: %@", [PFUser currentUser].username, self.kwik]];
[push sendPushInBackground];
[self.navigationController popToRootViewControllerAnimated:YES];
NSLog(@"%p", push);
}
我不知道每次用户发送推送时分配的 PFPush 是否仍然存在此问题。
在我将代码更改为这个之前,我在 viewDidLoad 方法中调用了self.push = [[PFPush alloc] init];,因为由于内存使用,我不喜欢每次用户发送推送通知时都分配一个新的 PFPush。
我现在的问题是:每次用户发送推送时分配一个新的 PFPush 对象是否重要,或者我可以在 viewDidLoad 方法中分配它吗?
【问题讨论】:
-
在一个 ARC 项目中,可能是你的项目,分配而不被其他东西保留的东西(如强实例变量或放置在本身被保留的集合中)将在它们被释放后立即被释放超出范围。您不必担心 OP 中分配的推送。只要需要推动,它就会持续。
-
谢谢@danh,这对我很有帮助。很遗憾,我无法将您的评论标记为最佳答案。
-
很高兴为您提供帮助。我没有给出答案,因为如果您也遇到问题推送,内存管理建议只是答案的一半。试图在答案中解决这两个问题。
标签: ios objective-c memory parse-platform push-notification