在自己的实例中调用Objective c

时间:2013-01-09 08:28:59

标签: iphone objective-c xcode uiview

目标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 @"";
}

基本上我正试图在我的视图中创建一个实例,只需点击一下这样的按钮:

- (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 个答案:

答案 0 :(得分: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关键字

答案 1 :(得分:0)

我不确定您要在对象中调用哪些方法,但要调用当前对象中使用self的方法。

[self runSomeFunction];

答案 2 :(得分: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
}
}

答案 3 :(得分:0)

这取决于你是否真的需要分配一个我们不能说的新实例,因为这取决于你的业务逻辑。

如果您要使用new在c ++中创建一个新实例,那么是,请分配/初始化一个新实例并使用它。

如果您在c ++中引用this,正如您的问题标题所示,那么您可以使用与self完全对应的thisself.isValid[self isValid]是等价的。

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