🦔

Objective-Cの勉強環境を作る

2022/02/13に公開

Object-CだけのSwift Packageを作って、Xcodeで編集、コマンドラインで実行するというのが実行引数を渡したり、ファイルをコマンドラインから追加するときとかに融通が効いて良さそうなので、紹介します。swift package initでは作れないので、次のようなファイル構造を手作りします(本当はswift package init --type executableをもとに作成)

ディレクトリ構造
.
├── Package.swift
├── README.md
└── Sources
    └── greeting
        ├── include
        │   └── main.h
        └── main.m

Package.swiftは、ソースとか指定しなくてもとりあえずは動くようです。

Package.swift
// swift-tools-version:5.5
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription
let package = Package(
    name: "greeting",
    dependencies: [],
    targets: [
        .executableTarget(
            name: "greeting",
            dependencies: []
        ),
    ]
)
main.h
#import <Foundation/NSObject.h>
#import <stdio.h>
@interface Person : NSObject
  - (void) sayHello;
@end
main.m
#import <main.h>
@implementation Person
 
- (void) sayHello{
  printf("Hello Objective-C World.\n");
}
 
@end

int main(void) {
  id person = [Person alloc];
  [person sayHello];
 
  return 0;
}

この状態で、swiftの時と同じように実行できます。

$ swift run greeting
[2/2] Build complete!
Hello Objective-C World.

Discussion