[英]Singleton not showing parametrized methods in Objective-C
我像本教程一样实现了一个单例
http://www.galloway.me.uk/tutorials/singleton-classes/
当我使用它时,它可以很好地显示我的属性,但是方法只能看到带有参数的方法。
@interface MyManager : NSObject {
NSString *someProperty;
}
@property (nonatomic, retain) NSString *someProperty;
+(void) methodOK;
+(void)methodiCantSee:(NSString *)name;
+ (id)sharedManager;
@end
我可以做这个
MyManager *sharedManager = [MyManager sharedManager];
sharedManager.methodOk
但是我做不到
MyManager *sharedManager = [MyManager sharedManager];
sharedManager.methodICantSee:@"MyName";
请帮忙!
您将所有方法都设为类方法。 使它们成为实例方法。
@interface MyManager : NSObject {
NSString *someProperty;
}
@property (nonatomic, retain) NSString *someProperty;
- (void) methodOK;
- (void)methodiCantSee:(NSString *)name;
+ (id)sharedManager;
@end
并且请学习调用方法的正确语法:
[sharedManager methodOk];
[sharedManager methodCantSee:@"some string"];
鉴于这些错误,我是否建议您找到有关Objective-C编程语言基础的好教程。 现在学习基础知识将为您节省大量时间。
要调用任何具有参数的方法,您必须在Objective-C中使用Objective-C语法。
试用:
[sharedManager methodICantSee:@"MyName"];
对于不带参数且具有非空返回类型的方法,允许使用点语法。
嗯,这是因为sharedManager
的类型为id
,它的字面意思是任何对象。
如果您想更具体一点,请使用instancetype
然后可以调用示例中演示的点语法。
例如
+ (instancetype)sharedManager;
但正如@rmaddy所说,如果您要调用的是一种方法,则应使用方括号。
编辑:
您的方法:
+(void) methodOK;
+(void)methodiCantSee:(NSString *)name;
被定义为类方法,这意味着它们可以通过该类进行访问并且没有任何状态,可以通过以下方式完成:
[MyManager methodOK];
[MyManager methodiCantSee:@"some_string"];
如果要在单例对象上使用实例方法(如果要与该对象的某个状态进行交互),则必须使用-
定义方法,并通过类的实例进行访问。 可以这样进行:
-(void)methodOK;
-(void)methodiCantSee:(NSString *)name;
MyManager *sharedManager = [MyManager sharedManager];
[sharedManager methodOk];
[sharedManager methodiCantSee:@"some_string"];
祝您事业顺利,希望我能为您提供帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.