1

客観的なc(iPhoneアプリの構築)で本当に新しく、メソッドの呼び出しがどのように機能するかを適切に理解する方法を理解しようとしています(私が取り組んでいる最新の言語であるc#と比較して)

私はこの実装を持っています

@interface User : NSObject{
}

@property NSInteger Id;
@property NSString *email, *password;
-(BOOL)isValid;
@end

@implementation User

-(BOOL)isValid{
  NSString *password = self.validateString:self.password;
  NSString *email = self.email;

  if(validUser){
     return YES;
  }else{
     return NO;
  }
}

編集: 明確でない場合は申し訳ありませんが、これは私が呼び出そうとしているメソッドです。

-(NSString *)validateString:(NSString *)string{
    // process the string
    return @"";
}

基本的に、ボタンの onclick で次のようにインスタンスを作成しようとしています。

- (IBAction)btnSubmit:(id)sender {
    // get values of email and password

    // do an isvalid to check with web service.
    User *user = [[User alloc] init];
    user.email = @"email@email.com";
    user.rawPassword = @"pass";

    if(user.isValid){
        // go to next page
    }
    else{
        // else refresh current page
    }
}

クリックでインスタンスを作成し、インスタンス内で処理する値を渡すのは良い方法ですか?

ありがとう!

4

4 に答える 4

1

そこに独自のオブジェクトを作成する必要はありません。これを行うために現在のオブジェクトを使用できます。

- (IBAction)btnSubmit:(id)sender
  {    
    self.email = @"email@email.com";
    self.rawPassword = @"pass";

    if(self.isValid)
    {
        // go to next page
    }
    else
    {
        // else refresh current page
    }
}

selfキーワードを使用して、スコープ内の同じオブジェクトを参照できます。C++thisで使用されるキーワードに似ています。

于 2013-01-09T08:33:16.920 に答える
0

オブジェクト内でどのメソッドを呼び出そうとしているのかわかりませんが、使用している現在のオブジェクト内のメソッドを呼び出しますself

すなわち

[self runSomeFunction];
于 2013-01-09T08:31:41.247 に答える
0

使用する

注:- 同じクラスでボタン アクションを作成している場合、同じクラスのインスタンスを作成する必要はありません。self を使用できます。

  - (IBAction)btnSubmit:(id)sender {
// get values of email and password

// do an isvalid to check with web service.
 User *user = [[User alloc] init];//not need if its same user class

user.email = @"email@email.com";//self.email=@"email@email.com"; if same user class

user.rawPassword = @"pass";//self.rawPassword=@"pass"; if same user class



if([self isValid]){//made a change here as in objective c its a syntax to call a method not with "."
    // go to next page
}
else{
    // else refresh current page
}
}
于 2013-01-09T08:33:00.733 に答える
0

それは、ビジネス ロジックに依存するため、新しいインスタンスを割り当てる必要があるかどうかによって異なります。

ここで new を使用して c++ で新しいインスタンスを作成する場合は、はい、新しいインスタンスを割り当て/初期化して使用します。

this質問のタイトルが示すように、c++ でを参照する場合は、selfかなり対応する を使用できますthisself.isValid[self isValid]同等です。

これは例えばメソッドです。クラスメソッド内selfでは、インスタンスではなくクラスを参照します

于 2013-01-09T08:45:37.820 に答える