在Objective-C中,编译器抱怨以下代码行:

if ([self getLength(self.identifier)] < givenWidth * kMarginAllowance)

这将得到错误“Expected']'”,并且文本下方的插入号恰好在“getLength”之后的括号中。

我怀疑我的[self getLength(self.identifier)]在如何组合事物方面是错误的。

我想说的是“获取此对象的标识符,并调用此对象的getLength()方法。”

我尝试了几种排列方式,但我认为我没有使用正确的语法。

这种事情的正确语法是什么?

-

我的代码是:
-(float)getLength:(NSString *)text
{
    UIFont *font = [UIFont fontWithName:@"Scurlock" size:20];
    CGSize size = [text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil]];
    return size.width;
}

-(void)getFormattedString:(float)givenHeight width:(float)givenWidth
{
    NSMutableArray *workbench = [NSMutableArray array];
    if (getLength(self.identifier) < givenWidth * kMarginAllowance)
    {
        [workbench addObject:self.identifier];
    }
    else
    {
        // [Under development]
    }
}

随附的.h文件具有:
-(float) getLength:(NSString *)text;

Xcode中有一个黄色警告,指示对getLength()的调用是无效的隐式声明。它专门指向的字符是getLength()调用的开始。如果尝试运行它,则会收到“Apple Mach-O链接器错误”,这是因为引用了_getLength且大概不会打开任何内容。

我在这里引起的根本问题是什么?内联方法可以满足我的要求,但是我宁愿对其进行修复,并了解正确的方法是什么。

最佳答案

尝试

[self getLenght:self.identifier]

所以会像这样:
if ([self getLenght:self.identifier] < givenWidth * kMarginAllowance)
getLenght:是一个Objective-C方法,但是您试图将其称为C函数。

希望这可以帮助!

10-07 19:55