Какие библиотеки должны, C или новичок C++ знают? [закрытый]

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

Метод может выглядеть примерно так:

func textFieldShouldReturn(textField: UITextField) -> Bool {
    if textField == self.field1 {
        self.field2.becomeFirstResponder()
    }

    return true
}

Фактическая логика здесь может отличаться. Существует множество подходов, и я бы определенно рекомендовал не использовать массивную цепочку if / else, если у вас много текстовых полей, но суть здесь в том, чтобы определить, какое представление активно в данный момент, чтобы определить, каким должно быть представление. активный. Как только вы определили, какое представление должно стать активным, вызовите метод этого представления becomeFirstResponder.


Для некоторой чистоты кода вы можете рассмотреть расширение UITextField, которое выглядит примерно так:

private var kAssociationKeyNextField: UInt8 = 0

extension UITextField {
    var nextField: UITextField? {
        get {
            return objc_getAssociatedObject(self, &kAssociationKeyNextField) as? UITextField
        }
        set(newField) {
            objc_setAssociatedObject(self, &kAssociationKeyNextField, newField, .OBJC_ASSOCIATION_RETAIN)
        }
    }
}

А затем измените наш метод textFieldShouldReturn, чтобы он выглядел так:

func textFieldShouldReturn(textField: UITextField) -> Bool {
    textField.nextField?.becomeFirstResponder()
    return true
}

Как только вы это сделаете, нужно просто установить новое свойство nextField каждого текстового поля в viewDidLoad:

self.field1.nextField = self.field2
self.field2.nextField = self.field3
self.field3.nextField = self.field4
self.field4.nextField = self.field1

Хотя, если мы действительно Если бы мы хотели, мы могли бы добавить префикс к свойству @IBOutlet, и это позволило бы нам подключить наше свойство "nextField" прямо в конструкторе интерфейса.

Измените расширение так, чтобы оно выглядело следующим образом:

private var kAssociationKeyNextField: UInt8 = 0

extension UITextField {
    @IBOutlet var nextField: UITextField? {
        get {
            return objc_getAssociatedObject(self, &kAssociationKeyNextField) as? UITextField
        }
        set(newField) {
            objc_setAssociatedObject(self, &kAssociationKeyNextField, newField, .OBJC_ASSOCIATION_RETAIN)
        }
    }
}

А теперь подключите свойство nextField в конструкторе интерфейсов:

enter image description here

] (Настройте своего делегата, пока вы здесь тоже.)


И, конечно, если свойство nextField возвращает nil, клавиатура просто скрывается.

8
задан 4 revs, 3 users 91% 2 June 2009 в 18:26
поделиться

18 ответов

Стандартная библиотека, STL и все, что им нужно для выполнения нужной им задачи. Добавьте немного улучшений для того, что по сути является стандартными расширениями библиотеки.

12
ответ дан 5 December 2019 в 04:28
поделиться

Если писать для Windows, я бы предложил MFC

0
ответ дан 5 December 2019 в 04:28
поделиться

Что касается C ++, то библиотека Boost ( http://www.boost.org/ ) является наиболее используемой библиотекой, поэтому вам следует начать с поиска там, если вы уже знать C ++ (вопреки тому, что я видел в некоторых из предыдущих ответов, вы должны понимать, что STL теперь является частью стандарта и, следовательно, частью языка C ++).

Слишком много других библиотек для выбора, все зависят от то, что вы собираетесь создать, если есть что-то, что вы «должны» знать, это, несомненно, будет библиотека GUI, и если вы не возражаете против раздувания, попробуйте заглянуть в Qt (www.qtcentre.org), это даст у вас почти полный набор инструментов.

Помните, что прежде чем потратить некоторое время на изучение нового API, вы должны выбрать те, которые не слишком свежие и действительно бесплатные, без привязки к строкам и без блокировки платформы,

1
ответ дан 5 December 2019 в 04:28
поделиться

Для C: string.h (для таких функций, как strcpy, strcmp, memcpy и т.п.) и stdio.

1
ответ дан 5 December 2019 в 04:28
поделиться

Очевидно стандартная библиотека C (хорошая документация по ней находится на http://www.cppreference.com/wiki/ ). В остальном это действительно зависит от того, что хочет делать ваш друг.

Если он действительно хочет заниматься численными задачами (и очень заботится о производительности), то libblas - это то, что ему нужно http: //www.netlib.org/blas/.

1
ответ дан 5 December 2019 в 04:28
поделиться

Для C:

  • стандартная библиотека: просто имеет смысл знать эту
  • glib: кроссплатформенную, достаточно полную, широко используемую и хорошо документированную
  • gtk. : безумно сложно, но если вам нужно писать графические приложения на C, это сложно превзойти.

Для C ++:

  • STL и Boost
  • Qt4: кроссплатформенный, очень полный, бесплатный, широко используемый, и хорошо документированы.

Также имейте в виду, что когда вы изучаете что-то вроде C или C ++ (или даже Java), вы на самом деле не изучаете «язык», на котором изучаете «платформу». Выберите платформу со всеми основными компонентами, которые вам понадобятся при написании настоящего приложения, а не возиться с синтаксисом. Чтобы эффективно и эффективно использовать язык, вам действительно нужно знать, какие инструменты у вас есть, и единственный способ сделать это - использовать хорошие примеры уже существующих инструментов. Все равно мои 2 цента.

2
ответ дан 5 December 2019 в 04:28
поделиться

Это действительно зависит от того, что вы собираетесь делать ... Я много использую libCurl, потому что я занимаюсь множеством вещей, связанных с Интернетом.

2
ответ дан 5 December 2019 в 04:28
поделиться

Это зависит от того, что хочет делать указанный новичок.

Очевидно, что стандартная библиотека вашего языка очень важна. Кроме того, это зависит от обстоятельств. Программист на C ++, вероятно, захочет ознакомиться хотя бы с некоторыми библиотеками Boost.

2
ответ дан 5 December 2019 в 04:28
поделиться

libm . :)

3
ответ дан 5 December 2019 в 04:28
поделиться

string.h наверное, привык много а если вы имеете дело с некоторыми вычислениями, то math.h

4
ответ дан 5 December 2019 в 04:28
поделиться

C ++: Boost, STL

C: математика

4
ответ дан 5 December 2019 в 04:28
поделиться

Я преподаю C в средней школе в Италии.
В течение 2 лет, как только они овладеют языком (указатели и потоки в C), студенты должны изучить другую библиотеку и «покажи и расскажи» некоторые образцы.
Библиотеки выдаются в зависимости от их интересов и навыки.
несколько примеров:
компьютерная графика -> freeimage
сопоставление текста -> регулярное выражение
игра -> аллегро
сеть -> сокет
база данных -> sqllite

и так далее ... В основном я думаю, что как только вы поймете язык (а также структуры данных ...) это должно быть «время веселья» и следуй своим тенденциям.

5
ответ дан 5 December 2019 в 04:28
поделиться

libc. libstdc ++.

Вы можете добиться успеха только с этими двумя.

5
ответ дан 5 December 2019 в 04:28
поделиться
  • C: хорошее описание библиотеки C89 здесь . Как только он с этим справится, GLib станет очень полезным. Он предоставляет связанные списки, расширяемые строки, функции доступа к каталогам и т. Д., И он достаточно переносимый.
  • C ++: Я думаю, что стандартная библиотека достаточно сложна для понимания. Как только он поймет iostreams, строки и т. Д., Ему следует сосредоточиться на продвинутых темах, таких как шаблоны, интеллектуальные указатели, исключения и полиморфизм. Это займет некоторое время.
6
ответ дан 5 December 2019 в 04:28
поделиться

Обязательными являются те, которые входят в стандартную библиотеку C и стандартную библиотеку C ++ (и, как упомянул Нил в своем ответе, убедитесь, что они понимают различие между C и C ++). Помимо этого, ему следует изучить те, которые он собирается использовать в своем проекте.

Я не учитываю Boost по двум причинам: 1) я не считаю, что это требуется для новичков, и 2) многое его планируется включить в стандартную библиотеку после того, как C ++ 0x заменит старый стандарт.

12
ответ дан 5 December 2019 в 04:28
поделиться

Поскольку не существует такого языка, как "C / C ++", ответы, которые вы здесь получите, вряд ли будут очень полезными. Программы на C не смогут использовать библиотеки C ++, и программы на C ++, вероятно, имеют лучшие альтернативы любым предлагаемым библиотекам C.

12
ответ дан 5 December 2019 в 04:28
поделиться

Чтобы кодировать чистый C, позвольте ему начать, например, с ncurses . Это весело.

2
ответ дан 5 December 2019 в 04:28
поделиться

Я бы порекомендовал изучить библиотеки ACE, особенно если вы хотите заняться распределенной и кроссплатформенной разработкой. Это может быть немного для «новичка», но это отличный следующий шаг после изучения STL и Boost. ACE также предоставляет реализованные шаблоны проектирования.

http://www.cse.wustl.edu/~schmidt/ACE.html

1
ответ дан 5 December 2019 в 04:28
поделиться