Что означает префикс NS?

Мой полный пример преобразования C # между CMYK & lt; -> HEX:

public class ColorConverter
{
    public static string CMYKtoHex(decimal[] cmyk)
    {
        if (cmyk.Length != 4) return null;

        var r = (int)(255 * (1 - cmyk[0]) * (1 - cmyk[3]));
        var g = (int)(255 * (1 - cmyk[1]) * (1 - cmyk[3]));
        var b = (int)(255 * (1 - cmyk[2]) * (1 - cmyk[3]));

        var hex = "#" + r.ToString("X2") + g.ToString("X2") + b.ToString("X2");
        return hex;
    }

    public static decimal[] HexToCMYK(string hex)
    {
        decimal computedC = 0;
        decimal computedM = 0;
        decimal computedY = 0;
        decimal computedK = 0;

        hex = (hex[0] == '#') ? hex.Substring(1, 6) : hex;

        if (hex.Length != 6)
        {
            return null;
        }

        decimal r = int.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
        decimal g = int.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
        decimal b = int.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);

        // BLACK
        if (r == 0 && g == 0 && b == 0)
        {
            computedK = 1;
            return new[] { 0, 0, 0, computedK };
        }

        computedC = 1 - (r / 255);
        computedM = 1 - (g / 255);
        computedY = 1 - (b / 255);

        var minCMY = Math.Min(computedC, Math.Min(computedM, computedY));

        computedC = (computedC - minCMY) / (1 - minCMY);
        computedM = (computedM - minCMY) / (1 - minCMY);
        computedY = (computedY - minCMY) / (1 - minCMY);
        computedK = minCMY;

        return new[] { computedC, computedM, computedY, computedK };
    }
 }
552
задан ThisClark 30 August 2016 в 18:24
поделиться

5 ответов

429
ответ дан Basil Bourque 30 August 2016 в 18:24
поделиться

расширение N STEP или NeXTSTEP / Sun в зависимости от того, кого Вы спрашиваете.

Sun имел довольно большие инвестиции в OpenStep некоторое время. Прежде чем Sun ввел изображение большинство вещей в основу, даже при том, что это не было известно как основа тогда, был снабжен префиксом NX, для NeXT, и когда-то непосредственно перед тем, как Sun ввел изображение, в которое все было переименовано к NS. S, скорее всего, не обозначал Sun тогда, но после того, как Sun, ступивший в общее согласие, был то, что это выдержало за Sun соблюдать их участие.

у меня на самом деле была ссылка для этого, но я не могу найти его прямо сейчас. Я обновлю сообщение, если/когда я найду его снова.

147
ответ дан rjmunro 30 August 2016 в 18:24
поделиться

Когда NeXT определяли NextStep API (в противоположность операционной системе NEXTSTEP), они использовали префикс NX, как в NXConstantString. Когда они писали спецификацию OpenStep с Sun (чтобы не быть перепутанным с операционной системой OPENSTEP), они использовали префикс NS, как в NSObject.

11
ответ дан 30 August 2016 в 18:24
поделиться

Исходный код для платформ Какао прибыл из библиотеки NeXTSTEP Основа, и AppKit (те имена все еще используются платформами Какао Apple), и инженеры NextStep приняли решение снабдить префиксом свои символы NS.

, поскольку Objective C является расширением C и таким образом не имеет пространств имен как в C++, символы должны быть снабжены префиксом уникальный префикс так, чтобы они не сталкивались. Это особенно важно для символов, определенных в платформе.

, Если Вы пишете приложение, такое, что Ваш код только вероятен когда-либо использовать Ваши символы, Вы не должны волноваться об этом. Но если Вы пишете платформу или библиотеку для использования других, необходимо также снабдить префиксом символы уникальный префикс. CocoaDev имеет страницу , где многие разработчики в сообществе Какао перечислили свои "выбранные" префиксы. Можно также найти это ТАК обсуждение полезный.

770
ответ дан That_some_guy 30 August 2016 в 18:24
поделиться

Это - NextStep (= NS) наследие. NeXT был компьютерной фирмой, которой был Steve Jobs, сформированный после того, как он вышел из Apple в 1985 и NextStep, это - операционная система (базирующийся UNIX) вместе с Obj-языком-C и временем выполнения. Вместе с он - библиотеки и инструменты, NextStep был позже переименован в OpenStep (который был также именем на API, который NeXT разработал вместе с Sun), который в свою очередь позже стал Какао.

Эти различные имена на самом деле довольно сбивают с толку (тем более, что некоторые имена отличаются только, в котором символы являются верхним регистром или нижним регистром..), попробуйте это за объяснение:

TheMerger OpenstepConfusion

52
ответ дан NANNAV 30 August 2016 в 18:24
поделиться
  • 1
    Я wouldn' t говорят that' s единственная причина. Я часто делаю это, потому что я должен сохранить сто миллионов или больше объектами в памяти, и сбережения трех байтов за запись являются довольно значительными. – Jim Mischel 16 March 2009 в 03:38