programing

Objective-C Project에서 Swift Pod Framework 가져오기 및 사용 방법

bestprogram 2023. 10. 14. 10:24

Objective-C Project에서 Swift Pod Framework 가져오기 및 사용 방법

일부 포드를 실행하기 위해 코코아팟의 새로운 프레임워크 설정을 확인하려고 했는데 목표-C 프로젝트에서 스위프트의 것을 사용하는 데 문제가 있습니다.

먼저, 코코아팟 0.35 프리릴리즈입니다. 사용법 및 설치 방법에 대해서는 여기에서 확인하실 수 있습니다.

현재 팟파일은 다음과 같습니다.

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

pod 'MBProgressHUD'
pod 'SLPagingViewSwift'

MB진행률HUD는 일반적인 회전 지표이며, SLPagingViewSwift는 Swift를 코코팟 검색에 입력하여 찾은 임의의 프로젝트입니다.여기 있습니다.ViewController.m프로젝트에서:

#import "ViewController.h"

@import SLPagingViewSwift;
@import MBProgressHUD;

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    
    // Works just fine
    MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.view];
    [self.view addSubview:hud];
    [hud show:YES];

    // Causes Error -- Won't build
    SLPagingViewSwift *sl = [[SLPagingViewSwift alloc] init];
}

@end

여기 있습니다.SLPagingViewSwift선언:

class SLPagingViewSwift: UIViewController, UIScrollViewDelegate {

보다시피, 이것은 다음으로부터 물려받은 것입니다.UIViewController, 그래서 그냥 할당하고 초기화하는 것은 문제가 되지 않습니다.파일만 따로 파일로 추가하면 위 코드는 잘 실행됩니다.효과가 있다는 걸요.

tl;dr

CocoaPods에서 만든 순수한 Swift Framework를 순수 Objective-C 클래스에서 사용하려면 어떻게 해야 합니까?

곤란촬영

주로 저는 다양한 수입품을 시도해 왔습니다.애플은 다음을 추천합니다.@import스타일리시하게

enter image description here

하지만 저는 다른 여러 가지 종류를 시도해 왔습니다.

// Compiler Error
#import <SLPagingViewSwift/SLPagingViewSwift.h>

// Builds Fine -- Doesn't Work
#import <SLPagingViewSwift/SLPagingViewSwift-Swift.h>
#import "SLPagingViewSwift-Swift.h"

저도 가끔 다른 스위프트 라이브러리 몇 개를 시도해 보았습니다. 클릭할 수 있는 것이 있는지 확인하려고요.

Cocoapods 문제에 대해 도움이 될 만한 내용을 찾을 수 없습니다. 또한 블로그나 릴리즈 관련 내용을 찾을 수 없었습니다.

메모

추가하면.SLPagingViewSwift.swift기존 방식으로 프로젝트에 별도로 파일을 제출하면 잘 작동합니다.

swift class를 public으로 선언해야 한다고 생각합니다. 그렇지 않으면 내부 클래스로 취급되어 동일한 모듈 내에서만 볼 수 있고, 이것이 파일은 작동하지만 프레임워크는 작동하지 않는 동일한 프로젝트에 추가하는 이유가 될 수 있습니다.또 하나 생각나는 것은 프레임워크가 objective-c 클래스 내에서 볼 수 있도록 클래스 선언 앞에 @objc를 추가해야 할 수도 있다는 것입니다.목표 c와 swift 간의 혼합과 일치에 대한 Apple의 가이드를 읽어보면 외부 프레임워크를 가져올 때 가져오는 프레임워크의 Define Module build 설정이 Yes로 설정되어 있는지 확인해야 합니다.그 옵션들 중 어떤 것이라도 확인해 보셨나요?

그냥 사용하세요.

@import SwiftModuleName;

구문, 그리고 사용할 함수가 public(및 @objc)인지 확인합니다.

제 경우 podfile(이전 프로젝트)에 "use_frameworks!"가 없었습니다.

추가해서 그렇게 수입품을 사용할 수 있었습니다.

#가져오기 "PODNAME-Swift.h"

포드의 수업을 이용합니다.

하지만 결국 저는 객관적인 설명이 부족해서 그 신속한 포드를 사용할 수 없었습니다.저는 이것이 많은 경우에 이슈가 될 것이라고 믿습니다.

언급URL : https://stackoverflow.com/questions/27995691/how-to-import-and-use-swift-pod-framework-in-objective-c-project