【发布时间】:2015-06-03 11:21:56
【问题描述】:
我想在类方法中调用方法[self methodName];,但它不会在同一个类中调用。
我试过了
+(void)myMehod
{
[self methoName];
}
【问题讨论】:
-
也许使用单例,或者在类方法中创建一个实例?但是你应该提供更多关于你想要做什么的细节。
我想在类方法中调用方法[self methodName];,但它不会在同一个类中调用。
我试过了
+(void)myMehod
{
[self methoName];
}
【问题讨论】:
实例方法只能通过相应类的实例调用。并且由于您使用self 在类方法中调用实例方法,因此self 将仅调用类方法,这就是您的实例方法不会被调用的原因。
要从类方法调用实例方法,您应该在类方法内有一个类的实例。有一种解决方法可以这样做-
+(id)myMethod
{
[[[self alloc] init] methodName]; //Raises compiler warning.
}
-(void) methodName
{
NSLog(@"I am called");
}
但上述解决方法将导致泄漏,因为创建的实例既不是released,也不是autorelease type。
【讨论】:
如果你想调用一个实例方法,你需要一个实例来调用该方法。
尝试这种解决方法,但它不遵循面向对象的概念
+(void)myMehod {
[[[self alloc] init] methodName];
}
-(void)methodName {
}
【讨论】: