4

Xcode 5.0 (iOS 7.0 SDK) は素晴らしい新機能、モジュールを追加します (WWDC 2013 セッション 404 を参照)。

コンパイル時間が短縮され、フレームワークを手動でリンクする必要がなくなるため、これは素晴らしいことです。さて、Appleフレームワーク。

Apple のエンジニアは、WWDC の講演で、「ユーザー フレームワークではモジュールを使用できない」と具体的に述べています。これは、そのようなことを行うことは不可能です (または、拒否につながる可能性がありますか?) ことを意味していると理解しています。

なぜだめですか?

編集

この質問は、そのような制限について「正しいか」を質問するものではありません。むしろ、「ユーザーフレームワークのモジュールを作成できないようにするモジュールの制限はありますか」? それとも、セキュリティの脆弱性...まだ静的なフレームワークであるため、なぜこれにセキュリティの問題があるのか​​ わかりませんか?

4

2 に答える 2

3

ユーザー フレームワークのモジュールを作成できます。ここに文書化されています:http://clang.llvm.org/docs/Modules.html

しかし、そのプロセスは複雑で、自分が何をしているのかを知る必要があり、そうしないと崩壊してしまいます。また、Apple は現在、それを機能させる方法を説明するドキュメントやツールを提供していません.

カスタム フレームワークとアップルの公式フレームワークに違いはありません。唯一の違いは、Apple のフレームワークが、現在モジュールを作成するために必要なコンパイラのしくみを深く理解している誰かによってモジュールにバンドルされていることです。

于 2013-09-23T03:02:28.750 に答える
-1

これは私の推測です。

新しいモジュールは、自動スタティック ライブラリ リンクを備えたプリコンパイル済みヘッダーと同様に機能します。最大のメリットは、異なるコンパイル単位で同じヘッダー セットを解析する必要がないことです。Compiler は、フレームワークのヘッダーをプリコンパイルし、再利用可能にします。

主な問題は、1 つのプロジェクトに 2 つのプリコンパイル済みヘッダーを含めることができないことです。ヘッダーがプリコンパイルされている場合、コンテンツはすべてのコンパイル単位 (.m ファイル) で同一でなければなりません。

カスタムモジュールを作成できるとしましょう:

mymodule.h

#ifndef MyCountType 
#    define MyCountType int
#endif
static MyCountType counter_per_file;

somefile.m

#define MyCountType double

#import "mymodule.h" // or @import "mymodule.h"

someotherfilie.m

#define MyCountType unsigned int

#import "mymodule.h" // or @import "mymodule.h"

では、 の型は何であるべきcounter_per_fileでしょうか? をプリコンパイルするときmymodule.h、コンパイラは の型を知る方法がありませMyCountTypeint

于 2013-09-23T03:18:18.843 に答える