我有一個自定義的NSObject數據結構,我想給不同的行爲。iOS NSString比較與Objective-C子類化
落實各項行爲,是它能更快
執行一個NSString比較每次(把這種情況X)這些行爲的一個可能發生(
if ([obj.name isEqualToString:@"...A..."]) ... else if ([obj.name isEqualToString:@"...B..."]) ...
然後針對不同的情況Y,只有包括對於應在情況Y.觸發(if ([obj.name isEqualToString:@"...C..."]) ... else if ([obj.name isEqualToString:@"...D..."]) ...
或子類中的數據結構和覆蓋一個類的方法
-(void) doThisAtPointX:..(inputs)..
,並在所有點X,我需要的變量behav調用doThisAtPointX
名字符串比較ior,而不是NSString
比較?在這種方法中,默認實現將是NO-OP或空白調用,因此在某個調用中不會觸發的子類仍然會得到方法調用但不起作用,因爲調用例程不知道對象是否具有自定義行爲與否。因此,doThisAtPointX
,doThisAtPointY
,...將總是在每個對象的X,Y,Z處被調用,但是不是通過字符串比較來確定我的對象是否是需要反應的對象之一,而是依賴於子類指針在調用時執行NOOP或非NOOP行爲。
當然,即使是方法2,在某些時候我需要做一個字符串比較合適的子類指針賦值,但它一開始只是一個字符串比較,以獲得正確的自定義指針而不是每次觸發自定義行爲時進行多次比較。
對於這個問題的目的,我們可以考慮自定義行爲的數量(即字符串比較中方法1,或子類的數量方法2)是恆定的,徘徊在200 。自定義行爲的比較/可能檢查將在應用程序中每30秒發生一次。
儘快將字符串轉換爲整數(枚舉),然後對其進行比較。 – trojanfoe
已經_you_嘗試哪種方式更快?如果不是,爲什麼還沒有呢? – holex
因爲實現200個子類需要很多時間。爲自己獲得明確答案的成本大約需要再花費兩週的時間。 – Cindeselia