iOS高效開發(fā)--正確使用枚舉

//返回字符串所占用的尺寸.
-(CGSize)sizeWithFont:(UIFont *)font WithStr:(NSString *)content AndmaxSize:(CGSize)maxSize
{
NSDictionary *attrs = @{NSFontAttributeName : font};
return [content boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
}

一、狀態(tài)和選項的區(qū)別(states and options)
在使用enum之前,我認(rèn)為,區(qū)分一下狀態(tài)和選項的概念是很必要的。

(1)狀態(tài)
同時只能有一種,如“YES”,"ERROR",不可能同時存在OK和Error.
(2)選項
同時可以有一種或一種一上,如App可以同時支持橫屏和豎屏,橫屏和豎屏在這個時候就是“屏幕方向”的兩種不同選項

接下來,我們看看,如何用枚舉定義狀態(tài)和選項。

二、enum與狀態(tài)(states)
不好的做法,我們經(jīng)??吹?/p>

#define STATE_OK 0
#define STATE_ERROR 1
#define STATE_UNKNOW 2

//直接用int型變量接收
int STATE = STATE_UNKNOW;

這種做法有如下的”不恰當(dāng)“:
(1)宏定義沒有類型約束,只是單純的替換
(2)無法限制狀態(tài)的所有情況,如果,將STATE 賦值成3,程序就會出錯,找不到匹配的狀態(tài),編譯器會對“STATE = 3”,提出警告。

正確的做法:

typedef enum _TTGState{
    TTGStateOK = 0,
    TTGStateError,
    TTGStateUnkonw
}TTGState;

使用如下:

- (void)dealWithState:(TTGState)state
{
    switch (state) {
        case TTGStateOK:
            NSLog(@"1");
            break;
        case TTGStateError:
            NSLog(@"2");
            break;
        case TTGStateUnkonw:
            NSLog(@"3");
            break;
        default:
            break;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容