2011-06-24 8 views
0

私は、コードに新しいものではないんだけど、戻ったばかりのそれに入ります。私は学校でJavaを学びましたが、私はObjective Cを学び始めています。基本的には、この問題がどのように改善されているのか許してください。私は検索することでこれを簡単に見つけることができませんでした。それが私が尋ねる理由です。別のクラスからオブジェクトのセッターメソッドを呼び出す

とにかく、私は私のofficeLife.mファイルのコードの下に持っています。私が扱っている2つの主なクラスはPerson.h/.mとofficeLife.h/.mです。私は、オブジェクトに名前や年齢などの変数を追加するだけでPersonクラスを定義しようとしましたが、officeLifeを使用して特定のPersonオブジェクトを作成してemployeesという配列に追加したかったのです。問題は私がofficeLife.mのPersonの名前を設定するときです(下に表示されます)Person.mで私のために合成されたセッター/ゲッターにアクセスする方法がわかりません。私はそれが次のようになることを知っています:[nameOfPerson firstName: Sam]私がPersonクラスに入っていれば、それは別のクラス/ファイルのように見えますか?

#import "officeLife.h" 
#import "Person.m" 


@implementation officeLife 
@synthesize employees; 

- (Person*) hirePerson:(NSString *)name andLastName:(NSString*)name2 
{ 
    if([employees count] == 0) 
    { 
     employees = [[NSMutableArray alloc] init ]; 
    } 
    else 
    { 
     Person *name = [[Person alloc] init]; 
     name.firstName = 

    } 

答えて

1

私はあなたの質問に答える前に、私はいくつかのObjective-Cの規則の概要を提供するつもりです:

クラス名は資産計上されます。 変数名はキャラブルケースです。 setterメソッドは、形を取る - [setFoo:] ゲッターメソッドがフォーム取る - [FOO]私の最高の推測だ

Person *p = [[Person alloc] init]; 
[p setFirstName:@"Jimi"]; 
// or - p.firstName = @"Jimi" 
// BOTH invoke the same setter method (somewhat unintuitive) 

を。あなたのPersonインターフェースが私の前にありません(投稿してください)。 Objective-Cを初めて使う人は、@synthesizeディレクティブを一時的に避け、独自のsetter/getterメソッドを書くことをお勧めします。あなたは言語のためのより良い感触を得られますが、あなたはまた、メモリ参照と/コピー/リリース戦略と潜在的な問題を保持するためにさらされるでしょう(それはあなたが直面しているかを知ることが重要です;))

例として、いくつかの理由で、IVARとパラメータの両方が同じメモリ位置を参照する場合、IVARを放出する原因、ならびにパラメータを解放するためセッターメソッドで

@interface Person : NSObject { 
    NSString *firstName; 
} 

- (void)setFirstName:(NSString *)s { 
    if (s != firstName) { // this compares memory references, _not_ string content 
     [firstName release]; 
     firstName = [s retain]; 
    } 
} 

- (NSString *)firstName { 
    return firstName; 
} 

、条件が重要です問題のホスト。

また、あなたのコードでは、他の{}ブロックでは、変数の「name」パラメータ「名前」と「衝突」と宣言しました。これは合法であるが、他の{}ブロック内で「名前」への参照は、ローカル変数にないパラメータを参照してください。変数の1つの名前を変更することができます。

+0

素晴らしいです!それは正確に私が探していた説明です、ありがとう –

+0

この場合、あなたの受け入れられた答えとしてこれをマークすることを忘れないでください。 –

関連する問題