Flexile Toolkit 是一个我常用在开发中的类库、扩展、函数和定义。 (见: Flexile App) 我将尽量简述以下亮点,但关于完整信息,我建议您阅读头文件(目前这些文件不完整…… это моя следующая todo)。
我已经尽可能地减少了类之间的依赖性。您可以导入 FlxToolkit.h
来导入所有内容。我还将 Toolkit 分成了:类、定义、函数(以及宏)和扩展。但是,有些类可能在实现文件中导入其他部分,如果我在使用该功能的话。
在大多数情况下,类别只是扩展了功能。然而,在少数情况下,功能被改变。最明显的是,NSMutableArray 和 NSMutableDictionary 类的索引方法上有类别设置。最初我是这样做,因为索引可用,但基础类尚未使用它。这略微改变了行为(在我看来,效果更好)
dictionary[@"key"] = nil;
。通常,这会导致编译器警告,并在最终运行时崩溃。array[1] = nil;
。array[NSUInteger_Max];
从数组中获取最后一个项……这不是说你不可以用 lastObject
来实现这一点,但它就在那里。索引更改可能会导致一些编译器警告问题。具体来说,如果尝试将 nil
设置为索引,编译器会抱怨。如果你想使用该功能,可能需要禁用此警告。
我有一些建议常用的类。其中一些非常有用
for (object in linkList.newIterator)
在列表linkList
上变异,但不能使用for (object in linkList)
在列表上变异。所有这些都被说到了,只有迭代器才有适当的变异方法。变异是通过一次快速枚举变为可能,因此不推荐您在不打算变异列表的情况下使用迭代器。否则,您将失去速度和效率。NSCopying
协议并返回适当的散列值。键不需要是唯一的。FlxCollection将保持具有相似键的对象的数组,您可以使用适当的方法调用请求这些对象。存储的对象可以为键路径返回nil
。这意味着如果请求该键路径,则不会被返回。集合将观察一个对象键路径值的变化,并相应地保持跟踪。这意味着如果您更改存储对象属性的值,当您使用新的值和适当的关键路径请求对象时,集合将稍后返回正确对象。context
或担心不正确的取消注册。我有相当多的定义,其中许多是对我常使用的通用函数/方法的简单快捷方式。例如,您可以使用MaxX
而不是使用CRectGetMaxX
。太方便了。
特别值得注意的是FlxTry
宏。我使用此宏在不需要致命断言的情况下,但仍想做的不仅仅是返回方法(例如,记录错误或将错误提交给分析服务器)。您还可以传递一个在条件失败时要执行的块(例如,从方法返回或进行清理)。如果定义了NonFailingException
,此函数将在失败时调用。您需要在导入文件之前定义它,才能使其生效。我个人有一个包含导入和定义的.h
文件,我将其列出在prefix.pch
中,以便将其导入到一切中(我经常使用FlxTry)。然后我在导入的.h
文件中将NonFailingException
定义为分析调用,以便我跟踪我的应用程序出错的地方。您还可以选择向用户发出警报,这将显示您在宏的第二个参数中输入的错误。