2017-12-27 6 views
1

ビット単位の操作をすばやく行うことができるので、Objective-Cでいくつかの定数を初期化してアプリケーション内で使用することを検討しています。Objective-Cの定数変数をSwiftに公開する

私はこれを行う方法を知っている唯一の方法は、クラスを作成し、値を返すメソッドを与えることでしたが、私はより効率的な値があると考えています。

これを達成するには、より簡潔な方法が必要です。これが好きに簡素化することができればそれは素晴らしいことだ

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

ヘッダー:

#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 

スウィフト使用法現在、私は次のことをやっています MTLTexReadAndWriteこれは定数であるか、そうであるかのように私はBridge().readAndWrite()を行うことができるので、それはすべて1行にありますか?

+0

なぜobjective-cが必要ですか? – Sulthan

+1

SwiftのほとんどはObjectiveCで、その逆も可能です。 Swift(またはObjectiveC)で何をする必要があると思いますか? –

+0

[XY問題](https://meta.stackexchange.com/a/66378/159251)のような匂いがします。 _both_ Swift _and_ObjCから値を読み取る必要がありますか?または、どちらか一方だけからですか? 1つだけの場合は? 「何らかの理由で、迅速にしか可能ではない」とはどういう意味ですか? –

答えて

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でのみ必要な場合は、そこに定義して、Bridgeをすべて削除します。

+0

あなたは「私がなぜあなたがいないのだろうと思っているのですか?私はOPがちょっと変わった問題に遭遇し、ウサギの穴に落ちたと思う。 –

+0

私はあなたが正しいと思っていますが、私は推測するのが嫌です。私は、OPがそうでないと証明されるまで、「OPは彼/彼女がやったことをする良い理由があったに違いない」という慈善的な立場を採用しようとしています。さらに、将来の読者が「Objective-CからSwiftへの定数変数を公開する」という本物の質問を実際に探している場合に備えて、私はタイトルの質問に答えたいと思います。 – Rob

+0

さて、十分に公正。 :) –

関連する問題