测试已测试 | ✓ |
语言语言 | Obj-CObjective C |
许可证 | BSD |
发布最后发布 | 2015 年 9 月 |
由 Yuru Taustahuzau,Nikita Leonov 维护。
libObjCAttr 是 Objective-C 语言的属性驱动编程。它是基于编译时(支持 Xcode 自动完成和错误追踪功能)。我们解决了实现的各个方面,包括性能,所以属性绝不会成为瓶颈。
我们的解决方案有助于减少代码复杂性,使其紧凑并自我文档化。许多语言支持属性,我们将 Objective-C 添加到这个列表中。
CocoaPods 是 libObjCAttr 集成的唯一推荐方式。除了标准的 pod 依赖配置之外,还需要如以下所示的 pod_install 钩子。典型的 Podfile 将如下所示
pod 'libObjCAttr'
post_install do |installer|
require File.expand_path('ROADConfigurator.rb', './Pods/libObjCAttr/libObjCAttr/Resources/')
ROADConfigurator::post_install(installer)
end
使用属性标记您的代码非常容易。我们目前支持 4 种 属性类型
查看以下示例以了解如何声明它们
RF_ATTRIBUTE(MyAttribute, stringProperty = @"Hello world")
@interface AnnotatedClass : NSObject {
RF_ATTRIBUTE(MyAttribute, numericProperty = @9000)
NSObject * _someField;
}
RF_ATTRIBUTE(MyAttribute, blockProperty = ^(int value) { return value; })
- (void)foo;
RF_ATTRIBUTE(MyAttribute, objectProperty = [NSObject new])
@property NSString *name;
@end
属性可以是从 NSObject 继承的任何类或其子类。它可能具有或不具有属性。
#import <ROAD/ROADAttribute.h>
@interface MyAttribute : NSObject
@property NSString *stringProperty;
@property NSNumber *numericProperty;
@property (copy) id blockProperty;
@property id objectProperty;
@end
现在您可以通过以下代码在运行时获取它们
...
NSArray *classAttributes = [AnnotatedClass RF_attributesForClass];
NSArray *ivarAttributes = [AnnotatedClass RF_attributesForIvar:@"_someField"];
// Let's filter it, in case there are many of them
MyAttribute *methodAttributes = [AnnotatedClass RF_attributeForMethod:@"foo" withAttributeType:[MyAttribute class]];
MyAttribute *classAttributes = [AnnotatedClass RF_attributeForProperty:@"name" withAttributeType:[MyAttribute class]];
...
还请查看有关 属性生成器 的信息,它使得幕后魔法变得简单。
libObjCAttr 需要 iOS 5.0 及以上版本。未测试与 4.3 及更旧版本的兼容性。
libObjCAttr 最初是为使用 ARC 而设计的。
关注 LibObjCAttr 在 Twitter 上 (@LibObjCAttr)
libObjCAttr 是在以下授权条款下提供的:BSD-3。打开随此分发一起提供的 LICENSE 文件,以查看许可证的完整文本。
有三种方式可以帮助我们