ank*_*usu 6 objective-c alloc ios
这是我的TextValidator类:
//TextValidator.h
#import <Foundation/Foundation.h>
@interface TextValidator : NSObject
- (BOOL) isValidPassword:(NSString *)checkPassword;
- (BOOL) isValidEmail:(NSString *)checkString;
- (BOOL) isEmpty:(NSString *)checkString;
@end
// TextValidator.m
#import "TextValidator.h"
@implementation TextValidator
- (BOOL) isEmpty:(NSString *)checkString
{
return YES;
}
- (BOOL) isValidPassword:(NSString *)checkPassword
{
return YES;
}
- (BOOL) isValidEmail:(NSString *)checkString
{
return YES;
}
@end
Run Code Online (Sandbox Code Playgroud)
这是我尝试在ViewController.m中初始化TextValidator类的方法:
//ViewController.h
#import <Foundation/Foundation.h>
@interface SignUpViewController : UIViewController <UITextFieldDelegate>
@end
//ViewController.m
#import "SignUpViewController.h"
#import "TextValidator.h"
@interface SignUpViewController ()
@property TextValidator *myValidator;
@end
@implementation SignUpViewController
- (void)viewDidLoad
{
[[self.myValidator alloc] init]; //iOS error: No visible @interface for 'TextValidator' declares the selector 'alloc'*
[super viewDidLoad];
}
@end
Run Code Online (Sandbox Code Playgroud)
当我尝试编译代码时,我收到以下错误:
No visible @interface for 'TextValidator' declares the selector 'alloc'.
Run Code Online (Sandbox Code Playgroud)
TextValidator类继承自NSObject,据我所知,init和alloc函数已在基类中定义.那么为什么程序会出现这样的错误呢?
请注意,我已经检查了这个主题,但它对我不起作用.
Ada*_*ght 15
我的通灵调试器,没有读取你的代码,告诉我你正在调用alloc
一个对象实例,而不是一个类.该alloc
方法是由类(通常继承自NSObject
)定义的静态方法,它返回基础对象的新实例.你不能要求实例分配自己!
现在看代码,我看到你想要:
self.myValidator = [[TextValidator alloc] init];
Run Code Online (Sandbox Code Playgroud)
构造一个新实例,并将其分配给该myValidator
属性.
更换
[[self.myValidator alloc] init];
Run Code Online (Sandbox Code Playgroud)
同
self.myValidator = [[TextValidator alloc] init];
Run Code Online (Sandbox Code Playgroud)
错误表示您尚未实现alloc
实例方法self.myValidator
,这是真的.但这是一个适用于所有NSObject
对象的类方法.
归档时间: |
|
查看次数: |
28539 次 |
最近记录: |