2017-12-27 2 views
1

약간의 이유만으로 비트 연산이 가능하므로 Objective-C로 일부 응용 프로그램을 초기화 할 필요가 있습니다.Objective-C에서 상수 변수를 Swift로 노출합니다.

나는 객관적으로 그다지 훌륭하지 않다. 그래서 나는 이것을하는 방법을 알았던 유일한 방법은 클래스를 생성하고 값을 반환하는 방법을 제공하는 것이지만, 나는 더 효율적인 값이 있다고 생각한다.

이를 위해 더 간결한 방법이 필요합니다.

헤더 : 현재 내가 다음을 수행하고

#import <Foundation/Foundation.h> 
#include <simd/simd.h> 
#import <MetalKit/MetalKit.h> 
#import <Metal/Metal.h> 

@interface Bridge:NSObject 

@property NSString *url; 

- (MTLTextureUsage)readAndWrite; 

@end 

구현 :

#import "MPS-Bridging-Header.h" 

@implementation Bridge 

- (MTLTextureUsage)readAndWrite { 
    return MTLTextureUsageShaderRead | MTLTextureUsageRenderTarget | MTLTextureUsageShaderWrite; 
} 

@end 

스위프트 사용이가 좋아하는 간단하게 할 수 있다면

let bridge = Bridge() 
Texture.usage = bridge.readAndWrite() 

그것은 좋은 것입니다 MTLTexReadAndWrite 마치 상수 일 수도 있고 그렇게 할 수도 있습니다. 내가 할 수있는 Bridge().readAndWrite() 그래서 그것은 모두 한 줄에 있습니까? 당신은 스위프트이 노출 싶었다면

+0

왜 목표가 필요합니까? – Sulthan

+1

ObjectiveC에서 Swift의 거의 모든 기능을 수행 할 수 있습니다. Swift (또는 ObjectiveC)에서해야 할 일이 무엇이라고 생각하십니까? –

+0

[XY 문제] (https://meta.stackexchange.com/a/66378/159251)와 같은 냄새가납니다. _both_ Swift _and_ObjC에서 값을 읽을 필요가 있습니까? 또는 하나 또는 다른 것에서 만? 하나만 있다면? "어떤 이유로 든 신속하게 가능"한 것은 무엇을 의미합니까? –

답변

2

, 나는 클래스 속성 정의하는 것 :

// Bridge.h 

@import Foundation; 
@import Metal; 

@interface Bridge : NSObject 

@property (class, nonatomic, readonly) MTLTextureUsage readAndWrite; 

@end 

그리고

// Bridge.m 

#import "Bridge.h" 

@implementation Bridge 

+ (MTLTextureUsage)readAndWrite { 
    return MTLTextureUsageShaderRead | MTLTextureUsageRenderTarget | MTLTextureUsageShaderWrite; 
} 

@end 

을 그리고 당신은 다음과 같이 사용할 수 있습니다 :

let readAndWrite = Bridge.readAndWrite 

하지만 Swift에서이 상수를 정의하지 않는 이유가 궁금합니다.

let readAndWrite: MTLTextureUsage = [.shaderRead, .renderTarget, .shaderWrite] 

Objective-C와 Swift에서 동일한 상수가 필요하면 위의 브리징 패턴을 사용하십시오. 그러나 Swift에서만 필요하면을 모두 제거하면됩니다.

+0

일종의 생각은 당신이 이동해야한다고 생각하지만 "나는 당신이 왜 안되는지 궁금합니다." 방공호가 좀 이상한 문제를 일으키고 토끼 구멍에 떨어 졌다고 생각합니다. –

+0

네가 맞다고 생각하지만, 나는 싫어. 나는 "OP가 그/그녀가 한 일을 할 좋은 이유가 있었음에 틀림 없다"는 자선 입장을 채택하려고 노력하고 있습니다. 게다가 미래의 독자들이 여기에 와서 진짜 "목표 -C에서 상수로의 상수 변수 공개"질문을 찾고자 할 때 제목에 대한 질문에 대답하고 싶습니다. – Rob

+0

알았어. :) –

관련 문제