2

次のサンプルコードを試しました。

    #import "Foundation/Foundation.h"

    @インターフェースの例
    {
        @public NSString* 名;
    }
    @終わり

    @実装例 @end

    int main()
    {
        例* 私;
        me->name = @"World";
    }

そして、私のコードはこの時点で私を嫌っているようです。フィールドを公開することがどれほど悪い考えかは理解していますが、main() の最後の行でエラーが発生する理由がわかりません。

4

3 に答える 3

6

ここには多くの間違いがあります

クラスはサブクラスNSObjectにする必要があるため、次のように宣言する必要があります

@interface example : NSObject
{
    @public NSString* name;
}

@end

次に、実際に値を取得するためにクラスのインスタンスが必要です。

example *me = [[example alloc] init];
NSLog(@"%@", me->name);

次のクラスは大文字で始まる名前が付けられ、通常はプレフィックスが付いています。

PSExample

次に、このようなインスタンス変数にアクセスしないでください。直接アクセスするのではなく、アクセサーを介してオブジェクトの状態を利用できるようにする必要があります。

于 2012-05-23T15:27:41.373 に答える
2

me変数を割り当てたり初期化したりしていません。あなたはおそらくこれを継承してからNSObject使用したいと思うでしょう:

example *me = [[example alloc] init]

少なくともあなたはallocそれに必要です。

于 2012-05-23T15:25:08.200 に答える
2

変数にアクセスする前に、変数を初期化する必要があります。また、からクラスを派生させる必要がありますNSObject

#import "Foundation/Foundation.h"

@interface example : NSObject
{
    @public NSString* name;
}
@end

@implementation example @end

int main()
{
    example* me = [[example alloc] init];
    me->name = @"World";
}
于 2012-05-23T15:25:47.740 に答える