2017-10-03 2 views
0

SwiftプロジェクトのObjective Cで書かれた古いライブラリをサブモジュールとしてインポートしています。 そのライブラリのオブジェクトのプロパティにアクセスしようとすると、アプリケーションが「認識できないセレクタ」例外でクラッシュします。Swift:存在するプロパティにアクセスすると「認識できないセレクタ」

これは、Objective Cのクラスのコードです:

@interface MotionzoneItem : NSObject<NSCopying> 

@property (nonatomic, copy) NSString *title; 
@property (nonatomic, readonly) NSString *describe; 
@property (nonatomic, assign) BOOL move, enabled; 
@property (nonatomic, assign) CGRect frame; 
@property (nonatomic, readonly) CGPoint point0, point1, point2, point3; 
@property (nonatomic, readonly) CGPoint leftTop, rightTop, rightBottom, leftBottom; 
@property (nonatomic, readonly) CGPoint selectedPoint; 
@property (nonatomic, strong) UIColor *handleColor; 
@property (nonatomic, assign) NSUInteger index; 

- (CGPoint)getSelectedPointWithRect:(CGRect)targetFrame; 
- (CGRect)getCircleFrameWithPoint:(CGPoint)targetPoint; 
- (void)updateFrame:(CGPoint)targetPoint; 
- (void)resetItem; 

@end 

Iが生成スウィフトクラスを確認した場合、我々は同じプロパティを見ることができます:

open class MotionzoneItem : NSObject, NSCopying { 

open var title: String! 
open var describe: String! { get } 
open var move: Bool 
open var enabled: Bool 
open var frame: CGRect 
open var point0: CGPoint { get } 
open var point1: CGPoint { get } 
open var point2: CGPoint { get } 
open var point3: CGPoint { get } 
open var leftTop: CGPoint { get } 
open var rightTop: CGPoint { get } 
open var rightBottom: CGPoint { get } 
open var leftBottom: CGPoint { get } 
open var selectedPoint: CGPoint { get } 
open var handleColor: UIColor! 
open var index: UInt 

open func getSelectedPoint(with targetFrame: CGRect) -> CGPoint 
open func getCircleFrame(with targetPoint: CGPoint) -> CGRect 
open func updateFrame(_ targetPoint: CGPoint) 
open func resetItem() 

} 

すべてがOKのようです、しかし、その後、私はこのコマンドを実行しようとするコードに:0123:

let motionzoneItem: MotionzoneItem = MotionzoneItem.init() 
motionzoneItem.handleColor = UIColor.red 

例外が言って発射されます

そして私はインスペクタを介して被写体を確認した場合、私は、オブジェクトに含まれていないプロパティがたくさんあります見ることができます:他のプロパティがある

Inspector debug

、handleColorまたは等がタイトル ???

ありがとうございます!

注:私はSwiftの代わりにObjective Cで書かれた同じコードを実行すると動作します。終わり

+1

Hmm。その場合には、 - [MotionzoneItem setHandleColor:]:unrecognized selector to ... "というメッセージが表示されることがありますので注意してください(エラーの' handleColor'ではなく 'setHandleColor'です。 )。エラーは 'handleColor'を見つけることができないと言っていますが、あなたはこの行でそれを呼んでいません。 'setHandleColor'を呼び出しています... – Rob

+0

キーは' ' - [MotionzoneItem handleColor]にあります:'もっとコードを表示すると助けになると思いますか? – Glenn

+0

私たちがそれを再現できない場合は、私たちがあなたを助けることが難しいので、私は[最小、再現性があり、検証可能な例](https://stackoverflow.com/help/mcve)を作成することをお勧めします。そして、我々は 'MotionzoneItem'の全てを見る必要はありません。プロジェクトのコピーを作成し、無関係なもの( 'handleColor'関連のもの以外のすべて)を整理して、問題を再現できることを確認します。 – Rob

答えて

1

FIXED

、プロジェクトをクリーニングし、得られたデータフォルダのすべてを削除するには、問題を修正します。これですべてが正常に動作し、すべてのMotionzoneItemプロパティを見ることができます。

ご迷惑をおかけして申し訳ありません。

関連する問題