0

在 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 并且可能不会出现任何问题。

我在这里造成的根本问题是什么?内联该方法可能会做我想做的事,但我宁愿修复它,并了解正确的方法是什么。

4

3 回答 3

1

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

于 2013-09-23T15:52:46.557 回答
1

ifgetLength是一个实例方法

// calls getLength method on self.identifier
if ([self.identifier getLength] < givenWidth * kMarginAllowance)

如果它是 C 风格的函数

if (getLength(self.identifier) < givenWidth * kMarginAllowance)
于 2013-09-23T15:53:44.377 回答
1

尝试

[self getLenght:self.identifier]

所以它会是这样的:

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

getLenght:是一种 Objective-C 方法,但您试图将其称为 C 函数。

希望这可以帮助!

于 2013-09-23T20:09:42.527 回答