[macos/ios/混合编程] ios 原生 objectc 程序移植到 macos 专题
clq
浏览(320) -
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目录。
”
本帖子属于以下条目()
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.