在 WSI 中使用 C++ 开发 iOS 应用

在 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...
}

};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Websocket C 开发可以使用一些库和框架,如libwebsockets和Cwebsocket。这些库提供了一些API和工具,以便在C语言实现Websocket通信。 以下是使用libwebsockets库实现Websocket C开发的示例: 1. 安装libwebsockets库 首先需要下载libwebsockets库,并将其安装在系统。可以从官方网站(https://libwebsockets.org/)下载源代码,并按照README文件的说明进行编译和安装。 2. 创建Websocket服务器 使用以下代码创建一个简单的Websocket服务器: ```c #include <libwebsockets.h> static int callback_echo(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len) { switch (reason) { case LWS_CALLBACK_RECEIVE: // 接收到客户端消息 lws_write(wsi, in, len, LWS_WRITE_TEXT); // 原样返回消息 break; default: break; } return 0; } int main(int argc, char **argv) { struct lws_context_creation_info info; struct lws_context *context; struct lws_protocols protocol; int port = 9000; memset(&info, 0, sizeof info); memset(&protocol, 0, sizeof protocol); protocol.name = "echo-protocol"; protocol.callback = callback_echo; protocol.per_session_data_size = 0; protocol.rx_buffer_size = 0; protocol.id = 0; info.port = port; info.protocols = &protocol; info.gid = -1; info.uid = -1; context = lws_create_context(&info); if (!context) { printf("Failed to create Websocket context\n"); return -1; } while (1) { lws_service(context, 1000); } lws_context_destroy(context); return 0; } ``` 该代码创建了一个接收端口为9000的Websocket服务器,并实现了一个回调函数`callback_echo`用于处理接收到的消息。在该回调函数,服务器会将接收到的消息原样返回给客户端。 3. 创建Websocket客户端 使用以下代码创建一个简单的Websocket客户端: ```c #include <libwebsockets.h> static int callback_client(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len) { switch (reason) { case LWS_CALLBACK_CLIENT_ESTABLISHED: // 连接建立成功 lws_callback_on_writable(wsi); break; case LWS_CALLBACK_CLIENT_RECEIVE: // 接收到服务器消息 printf("Received message: %s\n", (char *)in); break; case LWS_CALLBACK_CLIENT_WRITEABLE: // 发送消息给服务器 lws_write(wsi, "Hello, server!", 14, LWS_WRITE_TEXT); break; case LWS_CALLBACK_CLOSED: // 连接关闭 break; default: break; } return 0; } int main(int argc, char **argv) { struct lws_context_creation_info info; struct lws_context *context; struct lws_client_connect_info connect_info; struct lws *client_wsi; char *address = "localhost"; int port = 9000; memset(&info, 0, sizeof info); memset(&connect_info, 0, sizeof connect_info); info.port = CONTEXT_PORT_NO_LISTEN; info.protocols = NULL; info.gid = -1; info.uid = -1; context = lws_create_context(&info); if (!context) { printf("Failed to create Websocket context\n"); return -1; } connect_info.context = context; connect_info.address = address; connect_info.port = port; connect_info.path = "/"; connect_info.host = connect_info.address; connect_info.origin = connect_info.address; connect_info.protocol = "echo-protocol"; connect_info.ssl_connection = 0; client_wsi = lws_client_connect_via_info(&connect_info); if (!client_wsi) { printf("Failed to connect to server\n"); return -1; } while (1) { lws_service(context, 1000); } lws_context_destroy(context); return 0; } ``` 该代码创建了一个连接到localhost:9000的Websocket客户端,并实现了一个回调函数`callback_client`用于处理接收到的消息。在该回调函数,客户端会在连接建立成功后发送一条消息给服务器,并在接收到服务器消息时打印出来。 以上是使用libwebsockets库实现Websocket C开发的示例。除此之外,也可以使用其他库和框架,如Cwebsocket等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值