SPXDefines 1.2.4

SPXDefines 1.2.4

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2015年5月

Shaps 维护。



目的

适用于 Objective-C 项目的实用宏。

支持的操作系统和 SDK 版本

  • 支持的构建目标 - iOS 7.1
  • 最早支持的部署目标 - iOS 2.0

ARC 兼容性

SPXDefines 宏无论是在开启还是关闭 ARC 状态下都能正常工作。

安装

要在您的应用中使用 SPXDefines,只需将文件拖入您的项目,并在任何希望使用 SPXDefines 功能的类中导入头文件。

如果您正在使用 PODs,只需在 Podfile 中包含它:pod 'SPXDefines'

描述覆盖

当构建自定义类时,通常将 -description 覆盖提供为更好的输出,以便其他开发者在控制台上。要使其更容易并且获得更好的类型安全,您可以使用我的新描述方法。

- (NSString *)description
{
  return SPXDescription(SPXKeyPath(name), SPXKeyPath(age));
}

它展开为:

- (NSString *)description
{
  return [super.description stringByAppendingFormat:@"%@", [self dictionaryWithValuesForKeys:@[ @"name", @"age" ].description];
}

注意:此方法仅支持属性或方法,因为内部使用 self 上使用 KVO。

SPXAssertionDefines

为 iOS 项目提供更好的断言处理。它永远不会在内置版本中崩溃,但在 DEBUG 构建中将断言并在有问题的代码行上中断。C 函数内部使用等效的 SPXCAssertTrueOr... 方法。

以下代码将对 'condition' 断言,如果失败,将将断言写入控制台并中断有问题的代码行。在发布构建中,它将简单地返回。

SPXAssertTrueOrReturnNo(condition);
SPXAssertTrueOrReturnNil(condition);
SPXAssertTrueOrReturnError(condition);
SPXAssertTrueOrReturn(condition);

以下代码同样会断言 'condition',但它不会返回,而会执行指定的操作。

SPXAssertTrueOrPerformAction(condition, NSLog(@"Help!"));

SPXEncodingDefines

以下代码将使用 NSCoding 编码或解码变量。它使用 SPXEncode()SPXDecode(),分别展开为 [aEncoder encodeObject:name forKey:@"name"][aDecoder decodeObjectForKey:@"name"]。如果您想提供自定义的编码器、解码器,可以使用 SPXEncodeE 和 SPXDecodeE 的等效方法。

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSInteger age;

...

- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
  self = [super init];
  if (!self) return nil;

  decode(name); 
  decode(age);

  return self;
} 

- (void)encodeWithCoder:(NSCoder *)aCoder
{
  encode(name);
  encode(age);  
}

SPXLoggingDefines

以下方法将首先寻找 CocoaLumberjack,如果存在,则使用它进行日志记录。如果不存在,则回退到 NSLog,但具有改进的日志记录功能;)

格式化漂亮的

YYYY-MM-DD HH:MM:SS | 行号 | 类 | SELECTOR | 信息

示例

2014-03-21 14:31:22 | 23 | AppDelegate | applicationDidFinishLaunchingWithOptions: | Hello World!

logMethod; // simply logs the current class and selector
SPXLog(@"Hello World!");