iOS 用のシリアル ケーブル アダプターを使用するアプリを作成しています。アプリの基本設計は、詳細ビュー コントローラーを備えた分割ビュー コントローラーです。ここから、アクセサリを介して情報を送信するセッションを (別のビューで) 起動できます。セッション ビュー コントローラーからアクセサリ インターフェイス (SDK で提供) を制御するデリゲートをセットアップしたという意味で、アプリケーションを "動作" させ、最初の実行時に動作させました。唯一の問題は、(詳細ビュー コントローラーから再度起動するか、分割ビューでプロジェクトを切り替えることによって) セッションをもう一度実行しようとすると、既存の接続、つまり以前に確立された接続が原因で失敗することです。これは以下のコンソール ログです。
ERROR - opening session failed
ERROR - /SourceCache/ExternalAccessory/ExternalAccessory-242/EASession.m:-[EASession dealloc] - 139 unable to close session for _accessory=0x14d59250 and sessionID=65536
Cable Not Connected
それも役立つ場合は、セッションビューコントローラーの .h および .m ファイルからいくつかのコードを取り除いたものを次に示します。
.h
@interface SessionViewController : UIViewController <RscMgrDelegate> {
RscMgr *rscMgr;
CableConnectState cableState;
}
@property (strong, nonatomic) IBOutlet UIBarButtonItem *cableStatus;
- (void) sendStringToSerial: (NSTimer *) timer;
@end
.m
@implementation SessionViewController
@synthesize cableStatus;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
// Serial Setup
rscMgr = [[RscMgr alloc] init];
[rscMgr setDelegate:self];
//checks cableConnectState and adjusts the outlet cableStatus accordingly
}
- (void) sendStringToSerial: (NSTimer *) timer {
[rscMgr writeString:someString];
}
@end
質問: 私が持っている構造は最善の方法ですか? もしそうなら、どうすればセッションの問題を解決できますか? そうでない場合、ここからどこへ行くべきかについての提案はありますか? ありがとう!