在 WSI 中使用 C++ 开发 iOS 应用
使用C++不但能有效提高程序运行速度,而且可以减少BUG的发生,加强应用的软件工程质量,缩短应用开发周期。
WSI 封装了大多数常用的iOS NextStep 以及 UI(NS) 界面类,采用 Signals/Slots 模式转换了原始的消息回调,使用 virtual 实现 Objective-C 的 delegate 模式,达到使用 C++ 对象完成整个 iOS 应用的开发的目的。
UIView 例子:
class MainView
: public ::wsi::ns::View
{
public:
MainView()
{
// 设置按钮
button.set_text(tr(@”BUTTON”));
// 添加按钮到View add_sub(button); view().button.connect(kSignalButtonClicked, _action(MainView:: act_button_clicked), this); // 绑定按钮的点击信号 } void layout_subviews() { //排版 ::wsi::CGRectLayoutHBox lyt(bounds()); ::wsi::CGRectLayoutLinear lnr(lyt); lnr << (::wsi::flex)1 << (::wsi::flex)1 << (::wsi::flex)1; lyt << lnr; button.set_frame(lyt << lnr); // 居中放置这个按钮 } ::wsi::ui::Button button;
protected:
{ // process. }
};
UIViewController 例子:
class MainController
: public ::wsi::ui::Controller
{
public:
void view_loaded() { view().button.connect(kSignalButtonClicked, _action(MainController::act_button_clicked), this); // 绑定按钮的点击信号 }
protected:
{ // process... }
};