如何在目标c模型类中存储处理程序?

How to store handler in objective c model class?

提问人:Sazzad Hissain Khan 提问时间:3/29/2020 最后编辑:Sazzad Hissain Khan 更新时间:3/30/2020 访问量:45

问:

我的 iOS/Objective-C 项目中有 AppDelegate.m,

- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

}

我需要将两者存储在模型类中以备后用。因此,我试图制作一个模型,例如:userInfocompletionHandler

@interface MyNotification: NSObject
@property (copy) NSDictionary* userInfo ;
@property (copy) (void (^)(UIBackgroundFetchResult result)) completionHandler;
@end

@implementation MyNotification
@end

这给了我编译器错误。如何将这两个参数存储在模型中以备后用?

enter image description here

iOS Objective-C 推送通知 编译器错误 闭包

评论

0赞 Larme 3/30/2020
“这给了我编译器错误。什么错误?
0赞 Sazzad Hissain Khan 3/30/2020
@Larme错误地更新了我的帖子。请检查。
0赞 Larme 3/30/2020
在 Objective-C 中,它们被称为“块”。您可能正在寻找: fuckingblocksyntax.com 有一个 Swift 版本 fuckingclosuresyntax.com
0赞 Sazzad Hissain Khan 3/30/2020
@Larme在我的情况下,是否可以存储块并在以后开火?

答:

1赞 matt 3/30/2020 #1

你的意思

@property (copy) void (^completionHandler)(UIBackgroundFetchResult result);

我建议也添加到您的财产声明中。nonatomic

评论

0赞 Sazzad Hissain Khan 3/30/2020
只是一个题外话,当我存储推送处理程序并有时调用它时,它甚至有效吗?还有更好的主意吗?背景:我需要保存推送 userInfo 以备后用吗?当收到推送时,由于数据保护不可用,我的数据库还没有准备好,因此我需要存储推送,以便在受保护的数据可用后可以触发处理程序。甚至可以存储处理程序并在以后触发它吗?
0赞 matt 3/30/2020
您的问题显然是关于编译器错误的。我的回答也是如此。如果我的回答正确地告诉您如何修复编译器错误,请接受它。
0赞 Sazzad Hissain Khan 3/30/2020
这就是为什么添加前缀的原因。无论如何,感谢您的回答。off-topic
0赞 Sazzad Hissain Khan 3/30/2020
但是,我的标题与纯粹的编译器错误无关。@matt