1
iOSと通常のOS Xの開発を切り替えたとき、私は二つのことに気づいた:ココアタッチベースの匿名カテゴリでは許可されていますが、「通常の」ココアでは許可されていませんか?
//SomeClass.h
@interface SomeClass: SomeUIClass
@property (retain)SomeProperty* someProperty;
@end
//SomeClass.m
@interface SomeClass()
{
SomePrivateVar* somePrivateVar;
}
@end
@implementation SomeClass
@synthesize someProperty;
@end
上記は、iOSの下でうまくコンパイルされます。それは次のとおりです。
- 私はさらに 匿名のカテゴリ(クラス拡張)の下で.mファイルに他のプライベートアイバーズを宣言することができ、公共@interface
- にIVAR明示的 を宣言せずにプロパティを合成することができます。
しかし、OS X用にコンパイルして、UIベースのもの(UIViewの代わりにNSView)とは対照的にNSベースのクラスをサブクラス化すると、上記の両方でコンパイルエラーが発生します。
私はObjective-C 2.が上記のことを一般的に許可していると思っていますが、iOSの「ショートカット」にすぎませんか?またはiOSでは許可されているもののOS Xでは許可されていないものとは何が関係していますか?
ああ....ああ。実際に私は普遍的な32/64を構築していますが、実際には何らかの理由で32でコンパイルする必要があります。オーディオユニットの検証ツール - オーディオユニットプラグインを構築しています) 64ビット環境でビルドされている場合は、ビルドされたコンポーネントも表示されます。 – SaldaVonSchwartz