1. Си / Говнокод #3358

    +138

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    -(void)terminateSearchThreadInBackground:(NSNumber*)threadPtr
    {
        NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
        SearchThread* thread = (SearchThread*)[threadPtr unsignedLongValue];
    
        delete thread;
        [pool release];
    }

    И вновь я в шоке от нашего проекта. По какой-то неведомой причине передать в качестве параметра указатель на поток - это очень не трушно. Зато значительно более трушно - создать из него NSNumber, предварительно преобразовав к unsigned long...

    Запостил: Highlander, 31 Мая 2010

    Комментарии (81) RSS

    • Это что за диалект ?
      Ответить
      • Это - Objective-C.
        Ответить
        • Он где-то кроме продукции Apple используется ?
          Ответить
          • Да. В стандартной поставке gcc есть возможность сборки программ на Objective-C версии 1. Кроме того, существуют форки, реализующие возможности версии 2.0, в том числе и для мобильных архитектур (в частности, существует модифицированный NDK для Android).
            Кроме того, существует два больших проекта по портированию Cocoa на другие платформы. Это Cocotron и GNUStep. Выбирайте любой.
            Ответить
      • Даже стало интересно ... неужели столько Objective-C программеров на говнокоде, что всем стало ясно сразу что это именно Objective-C.
        Ответить
        • Вижу, рефлексы давить на кнопочку минусования хорошо развиты ;)
          Ответить
          • а что не так? спорол чушь и почему-то недоволен минусами
            Ответить
            • В чём чушь-то ? Когда в разделе "С++" пишут сишный код, начинаются вопли. А тут сразу чушь. Код же не на Си. Вот и поинтересовался.
              Ответить
              • а что кто-то обращает внимания на вопли макак?
                и да, здесь все (за редким исключением) понимают, что это obj-c.
                Ответить
                • За всех бы не говорил. Пусть и за редким исключением.
                  Ответить
                  • В радость минусующим нашел табличку:
                    http://www.tiobe.com/content/paperinfo/tpci/index.html
                    Походу, йа-мобилко и еже с ними способствуют росту привлекательности Obj-C.
                    Ответить
                    • а ну разумеется куда ж без GetTheFacts
                      Ответить
                    • Пиздец ... пидоросня :))) Вам приводишь примеры, а вы всё равно минусуете ))) Идиоты ... яблочники ))) Будьте объективны. Любители макак.
                      Ответить
                • А кто не понимает, тот гуглит NSAutoreleasePool и просветляется.
                  Вообще проблемы не вижу.
                  Ответить
                  • дык никогда и не было проблемы.
                    это абсолют свою безграмотность рекламирует, только и всего.
                    Ответить
                    • Задать вопрос - это уже называется безграмотность?
                      Замечательная аксиома.
                      Ответить
                      • если вопрос уровня детсада, то да, это безграмотность, зашоренность и ограниченность.
                        Ответить
                        • Не знаешь Obj-C значит детсад ?
                          Не знаешь Haskell - школота ?
                          Что дальше ?
                          Ответить
                          • ...не знаешь матан - в биореактор

                            а тебя это смущает? =)
                            Ответить
                            • Смущает твоё задранное ЧСВ
                              Ответить
                              • а ты не смущайся, тебя тут на свидание не приглашают..
                                Ответить
                                • Я даже не удивлюсь, если пригласишь.
                                  Ответить
                                  • ну разумеется тебе не впервой, с++ник же, для вашего брата это норма
                                    Ответить
    • >Objective-C
      Кто на этом хуёвом язычке ещё программирует?
      Он в сотню раз хуже С++ и в 10 от Си.
      Ответить
      • > Кто на этом хуёвом язычке ещё программирует?

        программисты под mac os x, чья доля среди десктопов в америке 11%.

        + iphone, ipad

        как язык с идеей "возьмём с и прикрутим ООП" рвёт с++ по всем параметрам.
        Ответить
        • >как язык с идеей "возьмём с и прикрутим ООП" рвёт с++ по всем параметрам.
          И чем он рвёт? Что там лучше, чем в С++? Какие возможности там есть, что-бы небыло в С++?
          Ответить
          • > то там лучше, чем в С++?

            ООП
            Ответить
            • Чем ООП в Object-C лучше, чем в С++?
              Ответить
              • близостью к smalltalk-идеалам
                Ответить
                • смолтолк - истинное говно
                  Ответить
                  • обоснуй или пошёл вон.
                    Ответить
                    • почитай хорошие инет ресурсы на эту тему
                      Ответить
                      • а ты почитай хорошие ресурсы, почему смоллток хорошо.
                        алсо, речь не о смоллток, а об объектной смоллток-подобной системе в обж-с
                        Ответить
                        • Никто не сказал, что смолтолкподобный - это хорошо. Скорее наоборот. Поне обойдёт С, Obj-С и С++.
                          Ответить
                          • >>>Никто не сказал, что смолтолкподобный - это хорошо

                            Слышь, гнида макакообразная, термин "Объектно-ориентированное программирование" ввел Алан Кей, когда создавал Smalltalk, а всякие уебки, вроде тебя и Страуструпа, обосрали все его гениальные идеи и выблевали обезьяний язык С++.
                            Ответить
                            • Блядь. Такой говнокодный язык, как смолтолк ещё поискать нужно.
                              Ответить
                              • ниасилятор такой ниасилятор.
                                просто признайся что ты копрофил-пыхапист
                                Ответить
                            • Просто когда я делал с++, я в те времена баловался кислотой и гомосексуальными контактами. Сейчас я образумился, и мне очень стыдно.
                              Ответить
                              • ололо вот это вброс.
                                сейчас пушкофф придет и подставит свою сочную попку под стручок своего господина.
                                Ответить
              • более ортогональная, логичная система...
                Ответить
    • > По какой-то неведомой причине передать в качестве параметра указатель на поток - это очень не трушно. Зато значительно более трушно - создать из него NSNumber, предварительно преобразовав к unsigned long...

      thread id головного моска
      Ответить
      • Справедливости ради отмечу, что поток, передающийся сюда как параметр, на самом деле не является обьектом objective-c (О_о). Это - плюсовый поток у которого id уже не возьмешь...
        Ответить
    • код сломается на 64бит?
      Ответить
      • Пока жив на 64 битах. Проверено и протестировано.
        Ответить
        • подозрительно, long ведь 32бита, а указатель - 64 бита. по идее то что работает это просто везёт пока...
          Ответить
          • > по идее то что работает это просто везёт пока..

            т.е. память выделяется по счастию в пределе < int32.MAX_VALUE... а будет выше - и уэлкам непонятные Access Violation.
            или я что-то путаю?
            Ответить
            • Дело в том, что в Mac OS указатель на процесс и размер long совпадают...
              Ответить
              • в том числе на 64-битном?
                Ответить
              • Это не только в MacOS. То же самое во всех мне известных POSIX-совместимых или стремящихся к POSIX системах.

                А именно, на 32-битной системе sizeof(long) == 4, в то время как на 64-битной системе sizeof(long) == 8.
                Ответить
                • Все равно стремно.
                  Есть, впрочем, специальный целый тип, в который влезает указатель.
                  Ответить
                  • так он же все равно будет тем же лонгом, но продефайненным. так что какая разница?
                    Ответить
                    • В уверенности:)
                      Я посмотрел стандарт 99, не нашел ничего насчет определения длины long, кроме того, что она не меньше 32.

                      Впрочем, к сожалению, (u)intptr_t помечены как optional:(
                      Ответить
                • А-а, а то под Виндовс sizeof(long) == 4 всегда.
                  Ответить
                  • Да, я вкурсе. Я это когда-то с удивлением узнал в одном споре в комментах к какому-то другому говнокоду :)
                    Ответить
    • >>delete

      Где здесь С?!
      Ответить

    Добавить комментарий