2016-06-06 46 views
7

Właśnie zacząłem używać noża do noży.
W projekcie, koledzy używający nokaut, wersja 7.0.0.Jaka jest różnica między `@ Bind` i` @ BindView` w maśle noża?

Widziałem go pisać @Bind(R.id.tv_name).
Ale widzę, że strona oficjalna strona maściowa ma wersję 8.0.1, składnia to: @BindView(R.id.tv_name)

Czy zmieniono składnię? lub oba mogą być używane? albo coś innego ?
Jaka jest różnica między nimi?

Nie znajduję odpowiedzi w Internecie
Mam nadzieję, że wszyscy pomogą, thx!

Odpowiedz

14

Tak, składnia została zmieniona w wersji 8.0.

Możesz sprawdzić listę zmian tutaj: https://github.com/JakeWharton/butterknife/blob/master/CHANGELOG.md#version-800-2016-04-25, aby zobaczyć wszystkie zmiany. Ale z 7.x do 8.x changelog jest:

  • @Bind staje @BindView i @BindViews (jeden widok i wiele widoków, odpowiednio).
  • Połączenia z bind teraz zwracają instancję Unbinder, która może być użyta do odniesień null. To zastępuje interfejs API i zapewnia obsługę usuwania słuchaczy.
  • Nowość: @BindArray wiąże zbiory String, CharSequence i int i TypeArray z polami.
  • Nowość: @BindBitmap wiąże instancji z zasobów do pól.
  • @BindDrawable obsługuje teraz pole tint, które akceptuje atrybut motywu.
  • Środowisko wykonawcze i kompilator są teraz podzielone na dwa artefakty.
    compile 'com.jakewharton:butterknife:8.0.0'
    apt 'com.jakewharton:butterknife-compiler:8.0.0'

  • Nowość: apply przeciążenia, które akceptują pojedynczy widok i tablice poglądów.

  • Reguły ProGuarda są teraz wysyłane do biblioteki i są dołączane automatycznie.
  • @Optional Adnotacja powraca, aby zaznaczyć metody jako opcjonalne.
+0

Dzięki za wysiłek! :) – iRuoBin

2

Tak, jedyna różnica między tymi słowami kluczowymi jest @Bind został przemianowany na @BindView w v8.0.0.

Należy pamiętać, że został usunięty i zastąpiony przez Unbinder, który został zwrócony przez bind(), dzięki czemu nie są zachowywane odwołania do widoku zewnętrznego.