这是一组我多年来在项目中使用的一系列有用的宏和常量。
为您的项目添加一些宏。
仅限于 ARC
包含所有宏头文件
ARC 相关的宏
抑制 PerformSelectorLeakWarning(内容)
禁用 Clang 在使用 ARC 时执行选择器的警告消息
SuppressPerformSelectorLeakWarning([self performSelector:@selector(mySelector)]);
提供一些宏,用于为具有 NSFetchedResultsController
和 UITableView
/ UICollectionView
的视图控制器生成默认实现。您在每个 UIViewController
中一次只能使用这些方法中的一个。您必须声明并配置您的 NSFetchedResultsController
以使用这些宏。不要忘记将您的 观控制器
设置为 NSFetchedResultsController
的代理。
FRC_TABLEVIEW_DEFAULT_IMPLEMENTATION
将为您的类的 NSFetchedResultsController
提供默认实现。假设您的视图控制器有一个 self.tableView UITableView
属性。默认实现将简单地为您的 UITableView
添加 / 删除节和行。tableView:willDisplayCell:forRowAtIndexPath: 会在对象刷新时调用,因此您必须在您的 UIViewController
中实现此方法。
FRC_TABLEVIEW_DEFAULT_IMPLEMENTATION
FRC_TABLEVIEW_DEFAULT_IMPLEMENTATION_FOR_TABLEVIEW(aTableView)
与 FRC_TABLEVIEW_DEFAULT_IMPLEMENTATION 相同,但允许您指定另一个属性。
FRC_TABLEVIEW_DEFAULT_IMPLEMENTATION_FOR_TABLEVIEW(self.myNewsTableView);
FRC_TABLEVIEW_DEFAULT_IMPLEMENTATION_UPDATE_SELECTOR(updateSelector)
与 FRC_TABLEVIEW_DEFAULT_IMPLEMENTATION 相同,但允许您在每个 NSFetchedResultsController
刷新时指定一个选择器。该选择器必须位于您的 观控制器 中,并且不带参数。它将在 controllerDidChangeContent: 方法中调用,因此所有更改都会经过处理之后。
FRC_TABLEVIEW_DEFAULT_IMPLEMENTATION_UPDATE_SELECTOR(@selector(frcRefreshed))
FRC_TABLEVIEW_DEFAULT_IMPLEMENTATION_FOR_TABLEVIEW_UPDATE_SELECTOR(tableView, updateSelector)
与 __FRC_TABLEVIEW_DEFAULT_IMPLEMENTATION_UPDATE_SELECTOR_ 相同,但允许您指定另一个属性。
FRC_TABLEVIEW_DEFAULT_IMPLEMENTATION_FOR_TABLEVIEW_UPDATE_SELECTOR(self.myNewsTableView, @selector(frcRefreshed));
FRC_COLLECTIONVIEW_DEFAULT_IMPLEMENTATION
将为您的类NSFetchedResultsController
提供一个默认实现。假设您的UIViewController
有一个UICollectionView
属性self.collectionView。默认实现将简单地添加/删除UICollectionView
的章节和行。如果对象被刷新,将会调用tableView:willDisplayCell:forRowAtIndexPath:
,因此您需要在您的UIViewController
中实现此方法。
FRC_COLLECTIONVIEW_DEFAULT_IMPLEMENTATION
FRC_COLLECTIONVIEW_DEFAULT_IMPLEMENTATION_FOR_COLLECTIONVIEW(aCollectionView)
与FRC_COLLECTIONVIEW_DEFAULT_IMPLEMENTATION
相同,但允许您为UICollectionView
指定另一个属性
FRC_COLLECTIONVIEW_DEFAULT_IMPLEMENTATION_FOR_COLLECTIONVIEW(self.myNewsCollectionView);
FRC_COLLECTIONVIEW_DEFAULT_IMPLEMENTATION_UPDATE_SELECTOR(updateSelector)
与FRC_COLLECTIONVIEW_DEFAULT_IMPLEMENTATION
相同,但允许您在每次NSFetchedResultsController
刷新时指定一个选择器。此选择器必须位于您的视图中控制器中,并且不接收任何参数。它将在controllerDidChangeContent:
方法中调用,因此所有更改都处理完毕之后。
FRC_COLLECTIONVIEW_DEFAULT_IMPLEMENTATION_UPDATE_SELECTOR(@selector(frcRefreshed))
FRC_COLLECTIONVIEW_DEFAULT_IMPLEMENTATION_FOR_COLLECTIONVIEW_UPDATE_SELECTOR(aCollectionView, updateSelector)
与FRC_COLLECTIONVIEW_DEFAULT_IMPLEMENTATION_UPDATE_SELECTOR
相同,但允许您为UICollectionView
指定另一个属性。
_FRC_COLLECTIONVIEW_DEFAULT_IMPLEMENTATION_FOR_COLLECTIONVIEW_UPDATE_SELECTOR(self.myNewsCollectionView, @selector(frcRefreshed));
用于访问几个iOS框架sharedInstance的快捷宏
// NSLocalizedString
LOCALIZED_STRING(string)
// Lang shortcuts
LANG
LANG_DISPLAY
// Shared instance shortcuts
NOTIFICATION_CENTER
FILE_MANAGER
MAIN_BUNDLE
MAIN_THREAD
MAIN_SCREEN
USER_DEFAULTS
APPLICATION
CURRENT_DEVICE
MAIN_RUN_LOOP
GENERAL_PASTEBOARD
// Network
NETWORK_ACTIVITY // Check if network activity indicator is displayed or not
// Color consts
CLEAR_COLOR // Shortcut for [UIColor clearColor]
// Application informations
APPLICATION_NAME
APPLICATION_VERSION
APPLICATION_BUILD_VERSION
APPLICATION_BUNDLE_ID
如nil <=> NSNull转换、文件操作、禁用/启用应用程序的用户交互等宏。更多信息请参阅文件
// nil / NSNull conversion
nilToNSNull(value)
NSNullToNil(value)
// Unsubscribe current object from all notifications
NOTIFICATION_CENTER_REMOVE
// User interaction (when using animations for example)
ENABLE_USER_INTERACTIONS
DISABLE_USER_INTERACTIONS
// Xib
LOAD_NIB_NAMED(@"myXib") // Load a xib, using self as owner
// Dump all available font on device. Useful to check if custom font are right imported and check there names
DUMP_FONT_LIST()
// Files manipulation
PATH_DOCUMENTS
PATH_LIBRARY
REMOVE_ITEM_AT_PATH()
FILE_EXISTS_AT_PATH()
用于轻松操作视图的frame/bounds的宏,显式自动调整大小掩码等...
// Frame update
UPDATE_FRAME_X(10); // When called from a UIView subclass
UPDATE_VIEW_FRAME_X(_tableView, 15.0); // To specify view to update
UPDATE_VIEW_FRAME_HEIGHT(_tableView, 150.0);
// Autoresizing masks
self.view.autoresizingMask = UIViewAutoresizingTopAlign; // View will stay top aligned to its parent view, without resizing
self.view.autoresizingMask = UIViewAutoresizingBottomAlign; // View will stay bottom aligned to its parent view, without resizing
self.view.autoresizingMask = UIViewAutoresizingCentered; // View will stay centered in parent view, without resizing
self.view.autoresizingMask = UIViewAutoresizingFill; // View will stay centered in parent view, with resizing in all directions
用于将共享实例添加到任何类的宏
SHARED_INSTANCE_PROTO; // Macro to put in your header file, if you want your sharedInstance method to be public
SHARED_INSTANCE_IMPL; // Macro to put in your implementation file, if you want your sharedInstance method to be public
SHARED_INSTANCE(myClass) // Macro to put in your implementation file, at top to implement sharedInstance
SHARED_INSTANCE_TERMINATE(myClass, selector) // Same as SHARED_INSTANCE, but allowing to to set a selector automatically called when application will terminate
数学相关宏
DEGREES_TO_RADIANS(degrees)
RADIANS_TO_DEGREES(radians)
CoreGraphics相关宏
CGizeMultiply(size, mult) // Will return a size with members multiplied by mult
用于确定当前设备、系统版本等的宏
// Device
IS_IPHONE()
IS_IPAD()
IS_IPHONE_5()
IS_IPHONE_6()
IS_IPHONE_6Plus()
// Device information
DEVICE_MODEL
DEVICE_LOCALIZED_MODEL
DEVICE_PLATFORM
DEVICE_SYSTEM_NAME
DEVICE_SYSTEM_VERSION
// System version
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.1");
SYSTEM_VERSION_IS_IOS6_OR_GREATER();
SYSTEM_VERSION_IS_IOS7_OR_GREATER();
SYSTEM_VERSION_IS_IOS8_OR_GREATER();
日志宏。用于格式化打印对象。您可以在编译时通过设置GON_TRIM_LOG_MACROS
标志来裁剪它们。默认情况下,日志使用NSLog
。您可以通过重写GON_LOGGER宏来设置另一个日志记录器。
GONLog(msg, ...)
LOG_VIEW(view)
FRAME_TO_STRING(frame)
RECT_TO_STRING(rect)
POINT_TO_STRING(point)
SIZE_TO_STRING(size)
OBJ_TO_STRING(obj)
LOG_FRAME(frame)
LOG_RECT(rect)
LOG_POINT(point)
LOG_SIZE(size)
LOG_OBJ(obj)
DATA_TO_STR(data, dataEnc)
DATA_TO_UTF8_STRING(data)
COORDINATE_REGION_TO_STRING(region)
COORDINATE_SPAN_TO_STRING(span)
MAP_POINT_TO_STRING(mapPoint)
MAP_SIZE_TO_STRING(mapSize)
LOCATION_COORDINATE_2D_TO_STRING(coordinate)
MAP_RECT_TO_STRING(mapRect)
LOG_COORDINATE_REGION(region)
LOG_COORDINATE_SPAN(span)
LOG_MAP_POINT(mapPoint)
LOG_MAP_SIZE(mapSize)
LOG_LOCATION_COORDINATE_2D(coordinate)
LOG_MAP_RECT(mapRect)
只需使用适当的参数调用您想使用的宏
CocoaPods: pod 'GONMacros'
手动: 将您的项目中的Classes
文件夹复制过来
在您的项目中导入所需的头文件。*.pch是一个好地方;)您还可以导入GONMacros_All.h,在项目中添加所有宏
1.0 : 首次发布
1.0.1 : 格式化,为宏添加了一些括号
1.0.2 : 重构
1.0.3 : 修复了FRC宏的bug
1.0.4 : 重构
1.1 : 添加了新的宏
1.1.1 : 重构,新宏