我在某处读到了枚举默认值,如下所示:
typedef enum {
MarketNavigationTypeNone = 0,
MarketNavigationTypeHeirachy = 1,
MarketNavigationTypeMarket = 2
} MarketNavigationLevelType;
Run Code Online (Sandbox Code Playgroud)
..但我不记得这样做的价值.如果我不给他们默认值 - 然后有人后来重新排序枚举 - 有什么风险?
如果我总是使用枚举名称,甚至不用它们的整数值来引用它们,那么有任何风险吗?
我能想到的唯一可能的问题是,如果我从数据库中的int值初始化枚举 - 并且重新排序枚举 - 那么应用程序将会中断.
由于内存模型,我意识到双重检查锁定在java中存在缺陷,但这通常与单例模式相关联并优化单例的创建.
在这个案例中,在objective-c中怎么样:
我有一个布尔标志来确定我的应用程序是否是流数据.我有3个方法,startStreaming,stopStreaming,streamingDataReceived,我使用以下方法保护它们免受多个线程的影响:
- (void) streamingDataReceived:(StreamingData *)streamingData {
if (self.isStreaming) {
@synchronized(self) {
if (self.isStreaming) {
- (void) stopStreaming {
if (self.isStreaming) {
@synchronized(self) {
if (self.isStreaming) {
- (void) startStreaming:(NSArray *)watchlistInstrumentData {
if (!self.isStreaming) {
@synchronized(self) {
if (!self.isStreaming) {
Run Code Online (Sandbox Code Playgroud)
这次双重检查不成功吗?双重检查在objective-c中是否与java中有类似的问题?这种模式有哪些替代方案(反模式).
谢谢