2016-06-06 11 views
7

나는 버터 나이프를 사용하기 시작했습니다.
프로젝트에서 버터 나이프를 사용하는 동료는 버전이 7.0.0입니다.버터 나이프에서`@ Bind`와`@ BindView`의 차이점은 무엇입니까?

나는 그가 @Bind(R.id.tv_name)이라고 쓰는 것을 보았다.
버터 나이프 공식 웹 사이트 버터 나이프 버전 8.0.1, 구문은 @BindView(R.id.tv_name)

구문이 변경 되었습니까? 또는 둘 다 사용할 수 있습니까? 또는 다른 것 ?
둘 사이의 차이점은 무엇입니까?

인터넷에서 답변을 찾지 못했습니다.
모두의 도움을 바랍니다.

답변

14

그래, 버전 8.0에서 구문이 변경되었습니다.

여기에서 변경 내역을 확인할 수 있습니다 : https://github.com/JakeWharton/butterknife/blob/master/CHANGELOG.md#version-800-2016-04-25 변경 사항을 확인하십시오. 그러나 7.X에서 8.X 상기 변경점은 :

  • @Bind@BindView@BindViews (하나의 뷰 및 여러 뷰 각각)을하게된다.
  • bind으로 전화하면 null 참조에 사용할 수있는 Unbinder 인스턴스가 반환됩니다. 이렇게하면 API가 unbind API로 대체되고 수신기를 지울 수있는 기능이 추가되었습니다.
  • 신규 : @BindArrayString, CharSequenceint 어레이에, TypeArray 필드에는 바인드합니다.
  • 신규 : @BindBitmap은 리소스에서 필드로 Bitmap 인스턴스를 바인딩합니다.
  • @BindDrawable은 이제 테마 속성을 허용하는 tint 필드를 지원합니다.
  • 런타임 및 컴파일러가 이제 두 개의 아티팩트로 분할됩니다.
    compile 'com.jakewharton:butterknife:8.0.0'
    apt 'com.jakewharton:butterknife-compiler:8.0.0'

  • 새로운 :보기의 단일 뷰와 배열을 받아 apply 오버로드.

  • ProGuard 규칙은 이제 라이브러리 내부로 배송되며 자동으로 포함됩니다.
  • @Optional 주석은 메소드를 선택 사항으로 표시합니다.
+0

감사합니다. :) – iRuoBin

2

예, 해당 키워드 사이의 유일한 차이는 @Bind이 v8.0.0에 @BindView로 변경되었습니다 것입니다.

ButterKnife.unbind()이 제거되어 bind()에 의해 반환 된 Unbinder으로 바뀌므로 외부보기 참조가 유지되지 않습니다.