GONMacros 1.1.4

GONMacros 1.1.4

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布上次发布2017年3月

Nicolas Goutaland 维护。



GONMacros 1.1.4

  • nicolasgoutaland

这是一组我多年来在项目中使用的一系列有用的宏和常量。

描述

为您的项目添加一些宏。

仅限于 ARC

GONMacros_All.h

包含所有宏头文件

GONARCMacros.h

ARC 相关的宏

抑制 PerformSelectorLeakWarning(内容)
禁用 Clang 在使用 ARC 时执行选择器的警告消息

SuppressPerformSelectorLeakWarning([self performSelector:@selector(mySelector)]);

GONFRCMacros.h

提供一些宏,用于为具有 NSFetchedResultsControllerUITableView / 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));

GONShortcutsMacros.h

用于访问几个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                      

GONUtilsMacros.h

如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()

GONViewMacros.h

用于轻松操作视图的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

GONSharedInstanceMacro.h

用于将共享实例添加到任何类的宏

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

GONCoreGraphics.h

数学相关宏

DEGREES_TO_RADIANS(degrees)
RADIANS_TO_DEGREES(radians)

GONMaths.h

CoreGraphics相关宏

CGizeMultiply(size, mult)       // Will return a size with members multiplied by mult

GONDevices.h

用于确定当前设备、系统版本等的宏

// 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();

GONLogMacros.h

日志宏。用于格式化打印对象。您可以在编译时通过设置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 : 重构,新宏