Xcode macOSアプリ 配布方法

Xcode macOSアプリ配布

XcodemacOSアプリ作成しApp Store以外の方法で配布する方法です。

リリースビルドは、ProfilingとArchiveの2つ方法があるようでした。

Profiling

Xcode メニューの[Project|Build For|Profiling]をクリック

[Project|Build For|Profiling]

~/Library/Developer/xcode/DerivedData/アプリ名-xxx/Build/Products/Release

上記ディレクトリにAPPが作成されています。

Archive

Xcodeメニューの[Project|Archive]をクリック

Menu Archive

下の画面が開きます。

Archives 画面

右側にある[Distribute App]をクリック

[Cory App]を選択し[Next]ボタンをクリックしファイルを保存します。

配布アプリ比較

ProfilingとArchiveどちらの方法でも問題なく他のmacOSで動きました

適当に作成したアプリでサイズを比較すると 「Profilingで作成=427KByte, Archiveで作成=359KByte」Archiveの方がアプリが小さくなっていました。

恐らくArchiveを使うことが正しい手順だと思います。

社内配布する場合、ZIPではなく.dmgで渡すほうがいいです。

Swift スコープ内Finally的なステートメント defer

Swift スコープ内Finally的なステートメント defer

deferはスコープを出る直前に実行できるコードを指定できます。Finally的な使い方ができます。Unsafeなallocate()をdeallocate()する場合に便利です。

public func test() -> Void{
	defer { print("Start defer") }
	print("Start Function")
}

上記コード例の場合結果は下のようになります。

public func test() -> Void{
	defer { print("Start defer 1") }
	defer { print("Start defer 2") }
	print("Start Function")
}

上記コードのようにdeferを複数いれることもできます。

この場合の結果は下記です。

Start Function
Start defer 2
Start defer 1

“Start defer 1”が一番最後に実行されました。

deferは、for などのスコープ内で利用することもできます。

public func test() -> Void{
	for i in [1,2,3] {
		defer { print("Statement defer \(i)") }
		print("Statement \(i)")
	}
	defer { print("Function defer") }
	print("Function Start")
}

上記コードを実行した場合下記のような結果でした。

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED