106 lines
2.3 KiB
Objective-C
106 lines
2.3 KiB
Objective-C
//
|
|
// TouchAreaCacheManager.h
|
|
// YuMi
|
|
//
|
|
// Created by AI Assistant on 2025/1/13.
|
|
//
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import <UIKit/UIKit.h>
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
/**
|
|
* 缓存的触摸区域信息
|
|
*/
|
|
@interface CachedTouchArea : NSObject
|
|
|
|
@property (nonatomic, assign) CGRect bounds; // Banner 边界
|
|
@property (nonatomic, assign) CGRect interactiveBounds; // 可交互区域边界
|
|
@property (nonatomic, strong) id banner; // Banner 对象
|
|
@property (nonatomic, assign) NSTimeInterval lastUpdateTime; // 最后更新时间
|
|
|
|
- (instancetype)initWithBanner:(id)banner
|
|
bounds:(CGRect)bounds
|
|
interactiveBounds:(CGRect)interactiveBounds;
|
|
|
|
@end
|
|
|
|
/**
|
|
* 触摸区域缓存管理器
|
|
* 负责缓存 Banner 的触摸区域信息,提供快速的空间查询功能
|
|
*/
|
|
@interface TouchAreaCacheManager : NSObject
|
|
|
|
/**
|
|
* Banner 边界缓存
|
|
* Key: Banner 对象的指针地址字符串
|
|
* Value: CachedTouchArea 对象
|
|
*/
|
|
@property (nonatomic, strong, readonly) NSMutableDictionary *bannerBoundsCache;
|
|
|
|
/**
|
|
* 可交互区域列表
|
|
*/
|
|
@property (nonatomic, strong, readonly) NSMutableArray *interactiveAreas;
|
|
|
|
/**
|
|
* 缓存是否启用
|
|
*/
|
|
@property (nonatomic, assign) BOOL cacheEnabled;
|
|
|
|
/**
|
|
* 单例方法
|
|
*/
|
|
+ (instancetype)sharedManager;
|
|
|
|
/**
|
|
* 更新 Banner 的边界信息
|
|
* @param bounds Banner 的边界
|
|
* @param interactiveBounds Banner 的可交互区域边界
|
|
* @param banner Banner 对象
|
|
*/
|
|
- (void)updateBannerBounds:(CGRect)bounds
|
|
interactiveBounds:(CGRect)interactiveBounds
|
|
forBanner:(id)banner;
|
|
|
|
/**
|
|
* 检查指定点是否在可交互区域内
|
|
* @param point 要检查的点
|
|
* @return 是否在可交互区域内
|
|
*/
|
|
- (BOOL)isPointInInteractiveArea:(CGPoint)point;
|
|
|
|
/**
|
|
* 获取指定点所在的 Banner
|
|
* @param point 要检查的点
|
|
* @return Banner 对象,如果不在任何 Banner 内则返回 nil
|
|
*/
|
|
- (nullable id)bannerAtPoint:(CGPoint)point;
|
|
|
|
/**
|
|
* 移除指定 Banner 的缓存
|
|
* @param banner Banner 对象
|
|
*/
|
|
- (void)removeBannerFromCache:(id)banner;
|
|
|
|
/**
|
|
* 清空所有缓存
|
|
*/
|
|
- (void)clearCache;
|
|
|
|
/**
|
|
* 获取缓存统计信息
|
|
* @return 统计信息字符串
|
|
*/
|
|
- (NSString *)cacheStatistics;
|
|
|
|
/**
|
|
* 调试方法:打印缓存内容
|
|
*/
|
|
- (void)debugPrintCache;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|