Я работаю в Objective-C/Cocoa, и у меня есть тип объекта Tile
. Каждый из них имеет подпись, которая может быть представлена как 4 различных целочисленных значения. Если я вывожу несколько этих значений в виде строки, с -
эс отделяя значения, это выглядит как в этом примере:Как хранить и сравнивать 4 значения для нескольких экземпляров одного и того же типа объекта?
signature: 4-4-3-3
signature: 4-3-3-3
signature: 0-0-0-1
signature: 0-0-1-1
signature: 0-0-1-0
signature: 1-1-1-2
signature: 1-1-2-2
signature: 1-1-2-1
signature: 3-3-3-1
signature: 3-3-1-1
signature: 3-3-1-3
signature: 4-4-4-3
signature: 4-4-3-3
Я в настоящее время хранения каждого из значений в качестве unsigned short
. Никогда не будет отрицательных значений, и максимальное значение вряд ли будет выше 15 или около того. Значение Zero является допустимым. Нет значения «ноль».
Я хотел бы быть в состоянии назвать:
[myTile signature]
для получения значения.
[myTile matches:otherTile]
, чтобы вернуть BOOL
, указав, соответствуют ли подписи.
Каков наиболее эффективный способ хранения этой «подписи» и сравнить ее с подписями других Tile
экземпляров? Кажется, что сравнение строк будет медленным ...
Будет ли один из этих подходов иметь лучшую производительность, чем другая? Мне, вероятно, потребуется перебирать большое количество этих объектов, выполнять сравнения и делать это быстро. – Clay
См. Мое редактирование. tl; dr: не беспокойтесь об этом, [KISS] (http://en.wikipedia.org/wiki/KISS_principle). –
Примечание: если вы реализуете 'isEqualToTile:' вы также должны реализовать 'isEqual:' (принимает 'NSObject', проверяем, что это' Tile', возвращаем 'NO', если нет, иначе возвращаем' isEqualToTile: ') * и *' hash'. Если вы не выполняете эти части фреймворка, например. коллекции, будут разбиты, если вы используете их с плитками. – CRD