1

そして、次の初心者の質問は....私は自分のビューに多くのテキストを描画する必要があり、それを簡単にするメソッドを書くのは良い考えだと思いました. このコードは私の見解です:

- (void)drawText: (NSString*) tdString : (NSString*) schrift : (unsigned char) r : (unsigned char) g : (unsigned char) b :
                (int) tsize : (int) xpos : (int) ypos;
{
NSPoint textPoint = NSMakePoint(xpos, ypos);
NSMutableDictionary *textAttrib = [[NSMutableDictionary alloc] init];
[textAttrib setObject:[NSFont fontWithName:schrift size:tsize] forKey:NSFontAttributeName];
[textAttrib setObject:[NSColor colorWithCalibratedRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0]forKey:NSForegroundColorAttributeName];
[tdString drawAtPoint:textPoint withAttributes:textAttrib];
}

- (void)drawBPM
{
NSString *bpmString = [NSString stringWithFormat:@"%d", bpm];
NSString *tbpmString = [NSString stringWithFormat:@"%d", mbpm];

if (bpm < 100){             drawText(bpmString,@"Helvetica Light", 140, 140, 140, 36, 100, 100);
}
if (bpm > 99 && bpm < 110){ drawText(bpmString,@"Helvetica Light", 140, 140, 140, 36, 100, 100);
}
if (bpm > 109 && bpm < 200){drawText(bpmString,@"Helvetica Light", 140, 140, 140, 36, 100, 100);
}
if (bpm > 199){             drawText(bpmString,@"Helvetica Light", 140, 140, 140, 36, 100, 100);
}
}

エディターで、「関数 'drawText' の暗黙の宣言は C99 では無効です」という警告が表示されます。実行時に次のエラーが表示されます:「アーキテクチャ x86_64 のシンボルが見つかりません。リンカ コマンドが終了コード 1 で失敗しました」。これは以前に尋ねなければならないことは明らかですが、私にはそれがわかりません。ありがとう!

4

1 に答える 1

1

「関数 'drawText' の暗黙の宣言は C99 では無効です」という警告は、@interface.

また、メソッドを正しく定義していません。次のようにする必要があります (改行はオプションですが、良い考えです)。

- (void)drawText:(NSString*)tdString
         schrift:(NSString*)schrift
               r:(unsigned char)r
               g:(unsigned char)g
               b:(unsigned char)b
           tsize:(int)tsize
            xpos:(int)xpos
            ypos:(int)ypos;

CGFloat(整数ではなく色と位置に使用する必要があることに注意してください)。

次に、C メソッドではなく、Objective-C メソッドとして呼び出す必要があります。

[self drawText:bpmString
       schrift:@"Helvetica Light"
             r:140
             g:140
             b:140
         tsize:36
          xpos:100
          ypos:100];

そして最後に、これらのメソッドを内部から呼び出し[NSView drawRect:]ていますね。

于 2013-02-23T10:56:19.023 に答える