调用类方法的问题(问题1)

时间:2011-02-18 11:22:10

标签: objective-c static-methods

我正在尝试将包含一些静态方法的旧“C”程序转换为Obj-c但是我在编译时遇到了一些问题。在头文件中我得到了:

@interface Anneal : NSObject
...
...
+(float)approxInitT;
-(costType)simulatedAnnealing;
...

并在实现文件中,这两个问题方法(为简洁起见也简化了):

@implementation Anneal

+(float)approxInitT
{
    float T=0.0;
    int m2=0;

    ...

    if(m2==0)
        T = T_LIFESAVER;
    else
        T = T / m2 / log(initProb);
    return T;
}

-(costType)simulatedAnnealing
{
    float T;

    ...

    if(Tset)
        T=initialT;
    else
        T=[self approxInitT]; // error:incompatible types in assignment
}

不幸的是我收到了“不兼容的赋值类型”错误,即使'T'和类方法的返回都是'float'类型。虽然代码包含多个源文件(我预计在接下来的几天内会遇到更多问题),但它们都在同一个文件中。     问题显然是由于我称之为'approxInitT()'的错误,但是到目前为止,对互联网的搜索还没有发现我的问题的任何答案。

作为一名新手,我没有任何多模型代码或使用静态/类方法的经验,我一定会对此有所帮助。在此先感谢: - )

2 个答案:

答案 0 :(得分:2)

类方法不属于类的任何特定实例。所以,尝试将消息传递给类本身 -

T = [ Anneal approxInitT ];

答案 1 :(得分:1)

self引用特定类的实例,但在调用类方法(+approxInitT)时,必须将消息发送给您的类:T=[Anneal approxInitT]