2015-01-28 3 views
9
class XYActivity: UIActivity,YouTubeHelperDelegate 
{ 
    var youTubeHelper:YouTubeHelper 
    var uploadURL: String! 
    override init() { 
     self.youTubeHelper = YouTubeHelper() 
    } 
    override func activityType() -> String? { 
     return nil 
    } 
// 
} 

다른 클래스에서 할당되도록 uploadURL을 공개하고 싶습니다. var uploadURL:String!의 공개를 추가하면 내부로 만들 것을 제안합니다. 나는 그것을 공개하고 싶다. 도와주세요swift : 선언 공용 변수

답변

16

공개하려면 클래스를 public으로 선언해야합니다.

기본적으로 한정자는 내부 클래스이므로 명시 적으로 private로 선언되지 않은 클래스, 메서드 및 속성을 현재 모듈에서 사용할 수 있습니다.

프로젝트가 앱으로 만 구성된 경우 공개는 필요하지 않습니다. 내부적으로 동일한 효과가 있습니다. 대신 프레임 워크를 개발하고 다른 모듈의 코드에서 해당 속성에 액세스 할 수 있어야한다면 전체 클래스와 공개 된 메서드/속성을 public으로 선언해야합니다.

연구 교재 : Access Control

발췌 설명 기본 액세스 수준 : (이 장에서 후술하는 바와 같이 몇 가지 특정 예외) 코드에서

모든 개체는 기본 액세스 수준이 자신의 명시 적 액세스 수준을 지정하지 않으면 내부의 따라서 많은 경우에 코드에 명시적인 액세스 수준을 지정할 필요가 없습니다. 단일 대상 응용 프로그램에 대한

액세스 수준 :

간단한 단일 대상 응용 프로그램을 작성 앱의 코드는 일반적으로 독립적 인 응용 프로그램 내이며, 필요로하지 않는다 앱 모듈 외부에서 사용할 수 있도록 설정됩니다. internal의 기본 액세스 수준은이 요구 사항과 이미 일치합니다. 따라서 사용자 지정 액세스 수준을 지정할 필요가 없습니다. 그러나 앱 모듈의 다른 코드에서 구현 세부 정보를 숨기려면 코드의 일부를 비공개로 표시하고 싶을 수 있습니다.

+0

그래서 모든 방법에 대해 공개 또는 비공개를 언급해야합니까? 클래스 선언의 public public을 추가하면 그렇게 할 수 있습니다. – rishu1992

+0

수식어를 지정하지 않으면 기본값은'internal'입니다. 엔티티의 가시성을 정의 된 현재 파일로 제한하기 위해'private'을 사용합니다. 대신'public'을 사용하여 모든 모듈에서 사용할 수 있도록합니다. 설명서를 읽으면서 답변에 링크를 게시했습니다. – Antonio

3

이 클래스가 포함 된 클래스가 공개 된 경우 공개 할 수 있으므로 그에 따라 변경하십시오.

+0

그래서 공개해야합니다. public class XYActivity : .... – rishu1992

+0

예, 정확하게 그랬습니다. –

1

주스 시작시 "공개"키워드를 추가하면 앱에 공개됩니다.