Lined Notebook

'shared' is unavailable in application extensions for iOS: Use view controller based solutions where appropriate instead.

by 사슴비행기

가끔 pod를 추가했는데, 위와같은 문구가 뜨는 경우가 있는 것 같다.

나도 이번에 처음 겪어봐서 잘은 모르지만..

어쨌든, 해석하면 

요딴 뜻인데, 엄청 애매모호하다...

뷰 컨트롤러 기반 솔루션을 사용하라는게 뭔말이고

찾아보니 몇가지 해결법이 나오는데

하나는 명시적으로 해당 기능을 사용하지 않겠다고 코딩하는 것이다.

하지만, 사용해야한다면?

 

https://twitter.com/twannl/status/1415643870512226307

 

Antoine v.d. SwiftLee  on Twitter

“You can solve this by marking a method explicitly as unavailable. This might move the needle to a different place in your project, but it should be possible to solve most cases this way. Unless your actually using the code in an extension, which was wro

twitter.com

@available(iOSApplicationExtension, unavailable)

애초에 잘못된 코드를 확장하지 않으면 문제가 발생할 일이 없다고는 하지만

이건 제가 확장한 게 아니라 라이브러리를 만든사람이 한 것이기 때문에...

문제가 발생할 수 있다고 판단됐다.

 

그래서 찾은 다른 방법은 

 

https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/150#issuecomment-380371871

 

Shared is unavailable: use view controller based solutions where appropriate instead. · Issue #150 · Skyscanner/SkyFloatingLa

This error is occurring for me. Any suggestions?

github.com

 

이 방법인데,

첫번째로 확인해야 할 것은 자신의 프로젝트 파일의 BuildSetting에서

Require Only App-Extension-Safe API가 No로 되어 있는지 확인해야 한다.

그 다음 문제가 발생한 Pod Library의 BuildSetting에서도 해당 값이 No인지 확인하고

Yes라면 No로 바꾸면 된다.

나는 내 프로젝트는 No로 이미 되어 있었는데

문제가 생긴 라이브러리의 Setting이 Yes로 되어 있었다.

 

https://hsg2510.tistory.com/109

 

Extension

Introduction : Extension은 앱과 다르다. Extension의 바이너리는 Extension포함 또는 배포하는 앱과는 별개로 실행된다. An App Extension's Life Cycle : extension은 App이 아니기 때문에, App의 Life cycle과..

hsg2510.tistory.com

이 글의

Using an Embedded Framework to Share Code

해당 부분을 보면, Require Only App-Extension-Safe API 항목은

라이브러리나 framework에서 작성한 코드가

그 라이브러리나 framework를 포함한 앱에서 extension할 때

포함되길 원하면 Yes값으로 변경하는 ... 뭐 그런건가 본데

(내가 제대로 이해한게 맞나 싶지만..ㅠ)

해당 부분 찾아보면서 잠깐 스쳐지나갔던 글을 보면

(링크를 못땄다 ㅠ)

No가 기본값인 것 같다.

블로그의 정보

Beautiful Coding

사슴비행기

활동하기