トップ «前の日記(2018-02-26) 最新 次の日記(2018-03-16)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

2018-02-28 [macOS][iOS]SwiftでFrameworkを実装する

サンプル・コードの構成を説明すると、macOSアプリケーションにEmbedded Frameworkを組み込んで確認を行った。

Embedded Frameworkに以下の内容のクラスを追加する。

public class QuickDraw: NSObject {
    @objc public func dbgmsg() {
        print("QuickDraw")
    }
}

アプリケーション側のObjective-Cコードから呼び出す例は以下となる。

@import Toolbox;
 
@implementation Exam
 
- (void)dbgmsg
{
    NSLog(@"%s", __func__);
    QuickDraw *qd = [QuickDraw new];
    [qd dbgmsg];
}
 
@end

Swiftコードから呼び出す例は以下となる。

import Toolbox
 
class ViewController: NSViewController {
 
    override func viewDidLoad() {
        super.viewDidLoad()
 
        let exam = Exam()
        exam.dbgmsg()
        
        let qd = QuickDraw()
        qd.dbgmsg()
    }
 
    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }
}

Frameworkはモジュールということになるので、モジュール内で定義したクラスを外部からアクセスするためには、openまたはpublicで宣言されている必要がある。

Frameworkのクラスは、Objective-CでもSwiftでも、モジュールをimportするだけでアクセスできた。

_ ソースコード

GitHubからどうぞ。
https://github.com/murakami/workbook/tree/master/mac/Bedrock - GitHub

トップ «前の日記(2018-02-26) 最新 次の日記(2018-03-16)» 編集