3

私はここ数年、Objective-C プログラミングを行っています。先日、ポッドキャストを聞いていて、Apple が何年にもわたってどのように簡単にしてきたかについて言及していましたが、インスタンス変数を手動で追加する必要がなくなったという言及を聞いたと思いました。これは本当ですか?現在、私がそれを行う方法は次のとおりです。

.h:

@interface Class : UIView

@property (nonatomic, strong) NSString *testString;

@end

.m:

@interface Class () {

NSString *_testString;

}

@end

@implementation Class

@synthesize testString = _testString;

この作業は必要ですか?

4

5 に答える 5

2

@propertyはインスタンス変数を自動的に作成し、@synthesize特に指定しない限り自動的に追加されます。はい、aだけ@propertyで十分です。

于 2013-05-01T19:13:49.027 に答える
1

LLVM 4.0 (Xcode 4.4+) 以降、プロパティ以外のボイラープレート コードを入力する必要はありませんが@dynamic、これはコンパイラの機能であり、言語 (Objective C) やランタイムの一部ではないことを知っておくとよいでしょう。システム。@synthesizeランタイム システムは、ディレクティブによって生成されたインスタンス変数とゲッター/セッターに引き続き依存しています。retainコードを生成できるのはコンパイラです。これは、規則に従って、ARC コードへの呼び出しやARC コード内での呼び出しを生成できるのとほとんど同じreleaseです。

そのため、古いバージョンの Xcode (具体的には古いバージョンの Clang/LLVM コンパイラ) を使用している他の開発者とプロジェクトを共有する場合は、変数を合成する必要があります。そうしないと、プロジェクトはコンパイルされません。または、実行時に失敗します。

于 2013-05-01T19:56:16.997 に答える
1

いいえ、Xcode 4.4+ では自動合成されます。

詳細については、こちらをご覧ください。

于 2013-05-01T19:13:08.607 に答える