2016-10-02 4 views
1

私は次のようにObjective Cの関数にCGRectを渡すためにしようとしている:私は_cropRectを参照してください悪いレシーバタイプ「CGRect」

+(UIImageView *) detectEdges: (UIImageView *)_sourceImageView withCropRect:(CGRect)_cropRect 
{ 

    [_cropRect topLeftCornerToCGPoint:[(NSValue *)[sortedPoints objectForKey:@"0"] CGPointValue]]; 
    [_cropRect topRightCornerToCGPoint:[(NSValue *)[sortedPoints objectForKey:@"1"] CGPointValue]]; 

    //code continues 

毎回私は、コンパイラエラーを取得:"Bad Receiver Type 'CGRect'"。なぜこれが起こっているのですか、それを修正するために何をすべきですか?

+2

'CGRect'はクラスではなく構造体です。 * topLeftCornerToCGPoint: 'メソッドは認識されません。サードパーティのコード/リポジトリを使用している場合は、参照を追加してください。 –

+0

私は_cropRectを別のクラスから渡そうとしています。私はUIImageViewで渡すことはできますが、CGRectでは渡すことはできません。なぜ私はCGRectを関数に渡すことができないのか分かりません。 – Tom

+2

これを関数に渡すことはできますが、メッセージを送ることはできません( 'topLeftCornerToCGPoint')。左上隅には '_cropRect.origin'を使ってCGRect構造体(オブジェクトではない)を逆参照することができます – danh

答えて

0

上記の他のものと同様に、topLeftCornerToCGPoint:およびtopRightCornerToCGPoint:のメソッドは、インスタンスでのみ使用できます。残念ながら私はフレームワークや達成しようとしていることを知らない。しかし、あなたはCGRectでこれらを呼ぶべきではありません。