GKRule
来源:互联网 发布:淘宝店标在线制作免费 编辑:程序博客网 时间:2024/06/05 10:21
GKRule
规则系统中的上下文,要测试的谓词和当测试成功时要执行的动作。
概括
评估GKRuleSystem对象并对其每个规则进行测试,其通常检查与规则系统相关联的状态或事实,并执行由测试通过的每个规则指定的操作,例如在规则系统中断言或撤回事实或修改其状态。
规则有两个部分:谓词和动作。
• 规则的谓词判断规则系统的上下文是否满足了规则要求。评估规则的谓词通常包括检查规则系统状态字典中的信息或测试系统声明的事实的成员等级(有关详细信息,请参阅GKRuleSystem中的facts属性)。
• 当且仅当满足规则的谓词时才会执行规则的动作。 规则操作通常涉及断言或撤回系统中的事实(请参阅“断言和收回事实”中列出的方法)或修改系统状态字典中的信息。
• 要为谓词和动作创建具有完全自定义逻辑的规则,请使用ruleWithBlockPredicate:action: 方法。该方法创建非常灵活的规则,但不能归档以供重用。
• 要创建具有更复杂的自定义逻辑的规则,请实现你自己的规则类:GKRule的子类为规则的谓词及其操作构建自定义逻辑,或用GKNSPredicateRule子类通过NSPredicate用于规则的谓词,然后仅为规则的行为创建自定义逻辑。自定义规则类的可重用性取决于你对这些类的实现。
子类注释(Subclassing Notes)
GameplayKit在GKRuleSystem对象的上下文中评估规则,因此自定义规则类应该是有效的,也就是说,它们通常不应该承担影响其谓词或动作的独立状态。
覆盖方法(Methods to Override)
• 覆盖performActionWithSystem: 方法来执行当你的规则满足时(即在你的evaluatePredicateWithSystem: 方法实现返回YES)时,在提供的规则系统的上下文中应该执行的任何操作。
子类化替代方法(Alternatives to Subclassing)
• 使用ruleWithPredicate:assertingFact:grade: 或ruleWithPredicate:retractingFact:grade: 方法创建一个使用NSPredicate对象进行评估的规则,并且其操作在包含规则系统中断言或撤回事实。
• 子类GKNSPredicateRule代替使用NSPredicate对象来评估规则,并仅为规则的操作写入自定义逻辑。
• 使用ruleWithBlockPredicate:action: 方法可以快速创建自定义逻辑包含在块对象中的规则。
Topics
创建数据驱动规则(Creating Data-Driven Rules)
+ ruleWithPredicate:assertingFact:grade:
+ ruleWithPredicate:retractingFact:grade:
创建基于块的规则(Creating Block-Based Rules)
+ ruleWithBlockPredicate:action:
在规则系统中设定规则的顺序(Setting the Order of Rules in a Rule System)
salience
评估规则(Evaluating a Rule)
- evaluatePredicateWithSystem:
- performActionWithSystem:
关系
继承
NSObject