登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: [macos/ios/混合编程] ios 原生 objectc 程序移植到 macos 专题     [回主站]     [分站链接]
[macos/ios/混合编程] ios 原生 objectc 程序移植到 macos 专题
clq
浏览(114) - 2023-11-16 12:36:05 发表 编辑

关键字:

[2023-11-20 19:53:12 最后更新]
[macos/ios/混合编程] ios 原生 objectc 程序移植到 macos 专题

探索阶段。完成后再移植支到开源区。

我知道这是可行的,但资料都比较分散,而我又有大量的 ios 原生 objectc 代码。

1.首先
macOS使用的是AppKit,iOS使用的是UIKit 。
这种移植技术是官方推出的,称之为 Catalyst 技术。

2.
对于 ios 项目添加这个支持比较简单。
在项目的 support dest.. 即支持目标中添加 mac Catalyst 就可以了。

本质上这是 “UIKit for Mac”,所以学名可以叫这个,或者叫 “macCatalyst”。

所以会有以下的这些说法:

"
UIDatePicker 在 macCatalyst 中不起作用
NSOpenPanel 在“UIKit for Mac”平台上不可用
"

3.
既然是 “UIKit for Mac” ,所以它的代码写法是 ios 角度的。可以直接加入
#import |AppKit/NSSavePanel.h|

这样的头文件说法,但实际上不一定用得了。有兼容性问题。

4.
//--------------------------------------------------------
//判断是否在 Catalyst 目标的条件编译 //来自 https://blog.csdn.net/GY5338/article/details/116997901
#if !TARGET_OS_MACCATALYST
#import "WXApi.h"
#endif

//--------------------------------------------------------

5.
打开文件对话框的一个实现 //不过保存对话框又要用哪个呢

实测调用了原生 macos AppKit 的静态库也是不行的。那么 mac Catalyst 很可能不是函数替换或者转译来实现的,更象是直接运行了一个 iOS 虚拟机。
--------

//据说用 UIDocumentPickerViewController 即可
//https://qa.1r1g.com/sf/ask/3965207361/
//双方 UIDocumentPickerViewController 并 UIDocumentBrowserViewController 在催化剂的工作。像在 iOS 上一样使用它们,它们将“神奇地”显示为标准的 Mac 打开/保存对话框。

//如果您需要,这里是一个很好的例子:https : //appventure.me/guides/catalyst/how/open_save_export_import.html

NSArray *documentTypes = @[@"public.content", @"public.text", @"public.source-code ", @"public.image", @"public.audiovisual-content", @"com.adobe.pdf", @"com.apple.keynote.key", @"com.microsoft.word.doc", @"com.microsoft.excel.xls", @"com.microsoft.powerpoint.ppt"];

UIDocumentPickerViewController *documentPickerViewController = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:documentTypes inMode:UIDocumentPickerModeOpen];
documentPickerViewController.delegate = self;
[self presentViewController:documentPickerViewController animated:YES completion:nil];


5.2
在 xcode 15 中新建立一个库无论动态库还是静态库,是没有那个 Product 目录(子文件夹)的。那么它生成的 .a 文件在哪呢?
参考
https://blog.csdn.net/wuxiaohui103/article/details/41118227

在 "/Users/你的用户名/Library/Developer/Xcode/DerivedData"


Xcode-->perferences--> locations
Derived Data,下面有一个路径:
/Users/Liam/Library/Developer/Xcode/DerivedData
这个就是默认的生成路径。点击旁边的箭头就可跳转到该文件夹。这里不值程序的目标文件,还有其他的生成的文件。
如果你想在项目中也生成一份,那么就点击Advanced按钮。将Build Location,选择“locations specified by targets”就可以了。
这时你在Build,那么项目路径下就会产生Build目录。







总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


所在合集/目录
macos和ios混合编程 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1