防止重复输入消息
Posted
技术标签:
【中文标题】防止重复输入消息【英文标题】:Preventing duplicate entry messages 【发布时间】:2015-11-04 01:01:15 【问题描述】:我有两个几乎相同的类,但一个是为 OS X 制作的,另一个是为 ios 制作的。然后我有一个这样的头文件:
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
#import "ClassForOSX.h"
#else
#import "ClassForIOS.h"
#endif
问题是因为这两个类都包含在项目中,xcode 编译两者,我有很多重复的错误条目,因为方法在两个类上具有相同的名称。
有没有办法阻止一个类编译,即使它包含在项目中,除非该类是为目标设计的?
是的,我知道我可以从目标中包含/排除类,但我正在处理双方和多个目标中的数百个类,这会产生很多最终会出错的包含/排除操作。我想知道如果目标正确,代码中是否有一些解决方案可以只允许类编译。
【问题讨论】:
【参考方案1】:使用目标最适合您的情况。但是你可以在代码中做到这一点
注意在 target->Build Settings 的 Preprocessor Macros 中添加或删除 __MAC_OS_X_VERSION_MIN_REQUIRED
ClassForIOS.h 文件
#ifndef __MAC_OS_X_VERSION_MIN_REQUIRED
#import <Foundation/Foundation.h>
@interface ClassForIOS : NSObject
// interface
@end
#endif
ClassForIOS.m 文件
#ifndef __MAC_OS_X_VERSION_MIN_REQUIRED
#import "ClassForIOS.h"
@implementation ClassForIOS
// implementation code
@end
#endif
ClassForOSX.h 文件
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
#import <Foundation/Foundation.h>
@interface ClassForOSX : NSObject
// interface
@end
#endif
ClassForOSX.m 文件
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
#import "ClassForOSX.h"
@implementation ClassForOSX
// implementation code
@end
#endif
【讨论】:
这个答案的第一句话很重要:“使用目标最适合您的情况”。这就是目标的用途。有一个 OS X 目标,一个 iOS 目标,为每个目标添加适当的源文件。如果由于某种原因这不起作用,那么只有在那时,提交一个错误并遵循上面给出的其余解决方案。您不使用目标的理由对我来说毫无意义;在所有源文件中维护#ifdefs 与使用目标一样复杂且容易出错,在这两种情况下,如果操作不正确,则会出现构建错误,因此正确维护目标很容易。以上是关于防止重复输入消息的主要内容,如果未能解决你的问题,请参考以下文章
防止重复的 websocket 消息 Laravel Echo 和 React