지금 내 OS X 10.9 프로젝트는 Objective-C에서 GUI로 설정되고 C++ 클래스에서 모든 처리가 설정됩니다. 이것은 최선의 방법처럼 보이지 않지만 이것이 나에게 주어졌고 나는 이러한 제약들로 작업해야만한다. 현재 코코아 GUI에 NSSlider
이 있습니다. 나는이 NSSlider
이 C++ 클래스의 변수 x
을 제어하도록하고 싶습니다.Objective-C에서 C++ 메서드를 호출하는 방법 Objective-C++을 사용하여 Cocoa 인터페이스
현재 허용 오차 막대는 프로그램을 실행할 때 작동합니다 (작동 중일 때 계속 슬라이딩 할 때마다 값이 계속 업데이트됩니다).
헤더 NSSlider
(Slider.h
)의 경우 : NSSlider
(Slider.mm
)에 대한
@interface Slider : NSObject {
@private
__weak IBOutlet NSTextField *sliderValue;
__weak IBOutlet NSSlider *slider;
}
- (IBAction)updateSliderValue:(id)sender;
@end
구현 : 어떻게
class CMain(){
public:
CMain();
void setValueofX(int number);
int getValueofX();
private:
int x;
};
: 여기
#import "Slider.h" // The NSSlider object
#import "CMain.h" // The C++ class that does all the processing (not sure if this is the way to include a C++ interface in an Objective-C++ class or if this will allow me to call its methods)
@implementation Slider
-(void) awakeFromNib {
[slider setIntValue:40];
[sliderValue setIntValue:[slider intValue]];
}
- (IBAction)updateSliderValue:(id)sender {
[sliderValue setIntValue:[slider intValue]];
// Here is where I'd think that if I have a setValueofX(int number) method in the C++ class
// I could call this somehow using objective-C++. I don't know if I can or how to call this method here
}
는
Main.h
에서 관련 조각입니다나는
Objective-C++
에
CMain.h
을 포함합니다 (
.h
파일 또는
.mm
파일입니까? 그리고 어떻게?) 내가 그 방법을 호출 할 수 있도록 그런 것
CMain.h
? Objective-C에서
setValueofX(sliderValue)
을 사용하여
x
의 값을 설정하는 방법은 무엇입니까?
자세한 정보가 필요하면 알려주세요. 어떤 도움이나 생각을 부탁드립니다!
감사합니다.
한가지주의 사항 : "get"을 사용하여 Objective-C에서 getter의 이름을 시작하지 마십시오. 이는 매개 변수에 부작용을주는 메소드에 예약되어 있습니다. 그냥 공차라고 부르세요. 그런 식으로 KVO 나 그러한 명명 표준을 준수하는 다른 메커니즘을 사용할 수 있습니다. – uliwitness
@uliwitness 팁 주셔서 감사! –