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;

getLength() の呼び出しが無効な暗黙の宣言であることを示す黄色の警告が Xcode に表示されます。それが具体的に指す文字は、getLength() 呼び出しの開始です。実行しようとすると、「Apple Mach-O Linker Error」が発生します。これは、_getLength が参照され、おそらく何も起こらないためです。

ここで私が引き起こしている根本的な問題は何ですか? メソッドをインライン化すると、私が望むことができるかもしれませんが、むしろそれを修正して、正しいアプローチが何であるかを理解したいと思います。

4

3 に答える 3

1

試す

[self getLenght:self.identifier]

したがって、次のようになります。

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

getLenght:は Objective-C メソッドですが、C 関数として呼び出そうとしています。

お役に立てれば!

于 2013-09-23T20:09:42.527 に答える