Flexile Toolkit 0.1.11

Flexile Toolkit 0.1.11

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

未注册维护。



  • Aaron Hayman

Flexle Toolkit

Flexile Toolkit 是一个我常用在开发中的类库、扩展、函数和定义。 (见: Flexile App) 我将尽量简述以下亮点,但关于完整信息,我建议您阅读头文件(目前这些文件不完整…… это моя следующая todo)。

我已经尽可能地减少了类之间的依赖性。您可以导入 FlxToolkit.h 来导入所有内容。我还将 Toolkit 分成了:类、定义、函数(以及宏)和扩展。但是,有些类可能在实现文件中导入其他部分,如果我在使用该功能的话。

扩展

在大多数情况下,类别只是扩展了功能。然而,在少数情况下,功能被改变。最明显的是,NSMutableArray 和 NSMutableDictionary 类的索引方法上有类别设置。最初我是这样做,因为索引可用,但基础类尚未使用它。这略微改变了行为(在我看来,效果更好)

  • 您可以使用如下方法从 NSMutableDictionary 中移除项目: dictionary[@"key"] = nil;。通常,这会导致编译器警告,并在最终运行时崩溃。
  • 您可以使用相同的方法从数组中移除项目: array[1] = nil;
  • 数组索引不会产生“越界”异常。如果你的索引超出范围,它会被设置为最后一个索引。所以,例如,你可以总是使用: array[NSUInteger_Max]; 从数组中获取最后一个项……这不是说你不可以用 lastObject 来实现这一点,但它就在那里。

索引更改可能会导致一些编译器警告问题。具体来说,如果尝试将 nil 设置为索引,编译器会抱怨。如果你想使用该功能,可能需要禁用此警告。

我有一些建议常用的类。其中一些非常有用

  • FlxLinkedList:这主要是一个标准的链表。它不是双向的,但会跟踪头和尾,因此您可以选择向列表添加而不是仅仅推入。特别值得注意的是,存在一个单独的迭代器类,它允许在快速枚举循环中进行变异。for循环必须在迭代器上构造,而不是在列表本身上。但是,您可以通过使用列表上的'newIterator'方法轻松地做到这一点。例如,您可以使用for (object in linkList.newIterator)在列表linkList上变异,但不能使用for (object in linkList)在列表上变异。所有这些都被说到了,只有迭代器才有适当的变异方法。变异是通过一次快速枚举变为可能,因此不推荐您在不打算变异列表的情况下使用迭代器。否则,您将失去速度和效率。
  • FlxCollection:此类允许您使用keyPaths作为“字典键”存储对象,以便以后检索。您可以使用尽可能多的键,但keyPaths必须返回一个有效的对象(或nil)以用作字典的键。换句话说,存储对象返回的值必须遵守NSCopying协议并返回适当的散列值。键不需要是唯一的。FlxCollection将保持具有相似键的对象的数组,您可以使用适当的方法调用请求这些对象。存储的对象可以为键路径返回nil。这意味着如果请求该键路径,则不会被返回。集合将观察一个对象键路径值的变化,并相应地保持跟踪。这意味着如果您更改存储对象属性的值,当您使用新的值和适当的关键路径请求对象时,集合将稍后返回正确对象。
  • FlxOrderedCollection:这几乎与FlxCollection完全一样,除了您的对象还会按正确顺序存储在数组中。
  • FlxKVObserver:这个特别有用的类允许您轻松观察键路径(KVO)。它将通过关联对象将自身连接到观察者,并在取消分配时自动取消注册。无需使用令人讨厌的context或担心不正确的取消注册。

定义

我有相当多的定义,其中许多是对我常使用的通用函数/方法的简单快捷方式。例如,您可以使用MaxX而不是使用CRectGetMaxX。太方便了。

特别值得注意的是FlxTry宏。我使用此宏在不需要致命断言的情况下,但仍想做的不仅仅是返回方法(例如,记录错误或将错误提交给分析服务器)。您还可以传递一个在条件失败时要执行的块(例如,从方法返回或进行清理)。如果定义了NonFailingException,此函数将在失败时调用。您需要在导入文件之前定义它,才能使其生效。我个人有一个包含导入和定义的.h文件,我将其列出在prefix.pch中,以便将其导入到一切中(我经常使用FlxTry)。然后我在导入的.h文件中将NonFailingException定义为分析调用,以便我跟踪我的应用程序出错的地方。您还可以选择向用户发出警报,这将显示您在宏的第二个参数中输入的错误。