0

내 Objective-C 클래스에서 Swift 파일에 선언 된 "SharedManager"의 공유 인스턴스에 어떻게 액세스합니까?Object-C 클래스 내에서 Swift 클래스에 정의 된 정적 객체를 할당하는 방법은 무엇입니까?

단계 :

스위프트 클래스 선언 :이 [지침]에서

[1] 내가 한 :

나는 다음과 같은 신속한 파일에서 객체를 선언 한

// Swift class 
class SharedManager{ 
    static let sharedInstance = SharedManager() 
} 

Objective-C 클래스에서 : AppDelegate.m에서

:

#import "ProjectName-Swift.h" 

@class SharedManager; 
@interface AppDelegate() 
@end 

@implementation AppDelegate 


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

// How do I access to the shared instance of "SharedManager" ? 

}  

    [1]: http://stackoverflow.com/questions/24024549/using-a-dispatch-once-singleton-model-in-swift 

답변

0
class MyClass { 
    private static let _sharedInstance = MyClass() 

    class func sharedInstance() -> MyClass { return _sharedInstance } 
} 

가 목표 C에서 스위프트 클래스를 사용하려면

MyClass.sharedInstance() 
+0

브리징 헤더 파일은 OP가 필요로하는 것과 반대되는 목표 C를 Swift에 표시하기위한 것입니다. OP는 Xcode가 이미 생성 한 자동 생성 헤더 파일을 사용해야합니다 ('#import ProjectName-Swift.h').알렉산더는 – Alexander

+0

나는 스위프트 클래스를 내보낼 다리 헤더가 { 개인 정적하자 _sharedInstance = MyClass에() 클래스 FUNC의 sharedInstance() -> MyClass에 { 반환 _sharedInstance } } 는 싱글 검색 via MyClass.sharedInstance() – mm24

+0

MyClass 클래스 말했듯이 – Bassam

1

를 통해 싱글을 검색, 그것은 (예를 오브젝티브 C 클래스에서 상속해야합니다 NSObject로 표시) 또는 @objc으로 표시 할 수 있습니다.

다음 중 하나를

@objc class SharedManager { 
    static let sharedInstance = SharedManager() 
} 

또는 : 당신은 다음을 수행해야

SharedManager *manager = SharedManager.sharedInstance; 
+0

불행히도 이것은 작동하지 않습니다 – mm24

+0

그게 무슨 뜻입니까? 그게 무슨 문제 야? – Alexander

+0

Property sharedinstance를 찾을 수 없다고 말합니다 – mm24

0

:

class SharedManager: NSObject { 
    static let sharedInstance = SharedManager() 
} 

그런 다음 당신은 다른 모든 목표 C 클래스처럼 사용할 수 있습니다

    Swift 형식을 참조하려는 Objective-C 구현 파일 ( .m)의
  1. #import "ProjectName-Swift.h".
  2. 서브 클래스 당신의 SharedManagerNSObject에서 :
class SharedManager: NSObject { 
    static let sharedInstance = SharedManager() 
} 

이 적어도 스위프트 2.3 세와 함께 작동합니다 (예 : 엑스 코드 8 & 현재 맥 OS/아이폰 OS SDK 버전, 또는 "사용 레거시 스위프트 언어 버전 '없이 빌드 구성에서 사용). Swift 2.3 이전에 @objc 속성을 가진 클래스를 추가로 표시하거나 Swift에서 선언 한 정적 변수를 Objective-C 코드에서 완전히 사용할 수 없는지 위의 작업을 수행 할 수 있는지 기억하지 못합니까?

관련 문제