文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

iOS开发进阶(二):走近iOS原生开发

2023-08-18 14:10

关注

一、前言

在应用 uni-app 进行跨平台APP开发过程中,发现并不支持视频播放小窗功能,且插件市场提供的插件用户体验不好,遂决定自行开发 uni-app 原生插件。

uni-app原生插件指的是将原生开发的功能按照规范封装成插件包,然后即可在 uni-app 前端项目中通过js调用开发的原生能力。

有关 iOS 原生开发环境搭建步骤,详参博文《跨平台应用开发进阶(二十七) iOS原生开发环境搭建步骤详解》。

二、知识储备

iOS目前流行两种开发语言:Objective-CSwiftObjective-C是一门面向对象的语言,并且是非常实用的语言。有C(C++)语言基础者上手会容易些;后者Swift是iOS/Mac未来开发的主要语言,无论从编程思想还是从api书写,都很不错。

三、 Object-C

鉴于 uni-app 原生插件使用 Object-C 实现。故后续开发语言以 Object-C 为主。

Objective-C,顾名思义,其扩展了标准的ANSI C语言,引入了 消息传递机制面向对象编程。(以下默认已具有C/C++语言基础)

语法概述:

语法要点:
在这里插入图片描述

示例代码如下:

#import "TestModule.h"@implementation TestModule// 通过宏 UNI_EXPORT_METHOD 将异步方法暴露给 js 端UNI_EXPORT_METHOD(@selector(testAsyncFunc:callback:))/// 异步方法(注:异步方法会在主线程(UI线程)执行)/// @param options js 端调用方法时传递的参数/// @param callback 回调方法,回传参数给 js 端- (void)testAsyncFunc:(NSDictionary *)options callback:(UniModuleKeepAliveCallback)callback {    // options 为 js 端调用此方法时传递的参数    NSLog(@"%@",options);        // 可以在该方法中实现原生能力,然后通过 callback 回调到 js    // 回调方法,传递参数给 js 端 注:只支持返回 String 或 NSDictionary (map) 类型    if (callback) {        // 第一个参数为回传给js端的数据,第二个参数为标识,表示该回调方法是否支持多次调用,如果原生端需要多次回调js端则第二个参数传 YES;        callback(@"success",NO);    }}// 通过宏 UNI_EXPORT_METHOD_SYNC 将同步方法暴露给 js 端UNI_EXPORT_METHOD_SYNC(@selector(testSyncFunc:))/// 同步方法(注:同步方法会在 js 线程执行)/// @param options js 端调用方法时传递的参数- (NSString *)testSyncFunc:(NSDictionary *)options {    // options 为 js 端调用此方法时传递的参数    NSLog(@"%@",options);        // 同步返回参数给 js 端 注:只支持返回 String 或 NSDictionary (map) 类型    return @"success";}@end

四、启动流程

main函数如下:

//  程序启动时执 main函数,在main函数当中有以下操作.#import <UIKit/UIKit.h>#import "AppDelegate.h"int main(int argc, char * argv[]) {    @autoreleasepool {    //第三个参数:UIApplication类名或者子类的名称 nil == @"UIApplication"     //第四个参数:UIApplication的代理的代理名称    //NSStringFromClass:把类名转化字符串    //NSStringFromClass好处:1.有提示功能 2.避免输入错误        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));    }}

在这里插入图片描述

程序完整启动流程:

  1. 执行Main
  2. 执行UIApplicationMain函数。
  3. 创建UIApplication对象,并设置UIApplicationMain对象的代理。UIApplication的第三个参数就是UIApplication的名称,如果指定为nil,它会默认
    UIApplicationUIApplication的第四个参数为UIApplication的代理.。
  4. 开启一个主运行循环保证应用程序不退出。
  5. 加载 info.plist 配置文件。判断 info.plist 文件当中有没有Main storyboard file base name里面有没有指定storyboard文件,如果有就去加载 info.plist
    文件,如果没有,那么应用程序加载完毕。

五、拓展阅读

来源地址:https://blog.csdn.net/sunhuaqiang1/article/details/131430731

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯