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

IE

[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相当对应于this. self.isValid并且[self isValid]是等价物。

这是实例方法。在类中的方法self将引用类,而不是实例

于 2013-01-09T08:45:37.820 回答