2012-02-07 8 views
4

私はノートと呼ばれるオブジェクトを作成したいと思います。次に、フィールドにいくつかの値を割り当ててコンソールに表示し、このすべてが正しく動作することを確認します。iOSオブジェクトを作成してください

 Note.h 
#import <Foundation/Foundation.h> 

@interface Note : NSObject 
{ 
    NSNumber *position; 
    NSString *syllable; 
} 
@property(nonatomic, retain)NSNumber *position; 
@property(nonatomic, retain)NSString *syllable; 
@end 

    Note.m 

#import "Note.h" 

@implementation Note 
@dynamic position; 
@dynamic syllable; 
@end 

この後、別のクラスでフィールドに値を割り当てたいと思います。

-(void) configNote:(Note*)not 
{ 
    not = [Note alloc]; 
    [not setPosition:[NSNumber numberWithInt:2]]; 
    [not setSyllable:@"Twin-"]; 
} 


..... 
Note *note; 

[self configNote:note]; 

NSLog(@" pos : %d syl : %@ ",[[note position] integerValue],[note syllable]); 

私の代わりに@dynamic@synthesizeを使用しようとしましたが、まだ何も変わりません。エラーの理由は次のとおりです。-[Note setPosition:]: unrecognized selector sent to instance 0x733d060

答えて

4

initメモやアイバーズを初期化し、 を合成するのにダイナミックに変更するカスタムのinitメソッドを使用して、より良い使用のためにこの初期化

- (id)initWithPosition:(NSNumber*)pos andSyllable:(NSString*)syl { 
    self = [super init]; 
    if (self) { 
     self.position = pos; 
     self.syllable= syl; 
    } 
    return self; 
} 
+1

-initを上書きする必要はありませんが、基本的に正しいです。問題のドメインがこれを禁じていない限り、プロパティのデフォルト値nilを受け入れても問題ありません。 –

0

ARCを使用している場合は、"retain"の代わりに"strong"を試してください。あなたのvaribalesを初期化する

+0

同じエラーメッセージ – Teo

+0

とにかく動的に変更する – Stavash

2

あなたの質問は非常に基本的で根本的なので、あなたがしたいかもしれませんココアセンターでこのTutorialをチェックしてください。それは非常にうまくいっていて、オブジェクトを扱うときの基本のいくつかを教えてくれます。

0

あなたの問題は、参照ではなく値でconfigNote:にNoteオブジェクトポインタを渡していることです。 configNote:の中にnotを新しく割り当てられたNoteオブジェクトに設定すると、実際にはローカル変数notをその値に設定しています。 NSLogconfigNote:オブジェクトの外で実際に受け取るものは、configObject:の呼び出し前の元のnoteの値です。

configObject:メソッドの外でノートオブジェクトの割り当てを希望するか、NoteオブジェクトポインタをconfigObject:に渡して参照してください。

関連する問題