我有一个 dotnet 8 MAUI IOS 应用程序,我正在尝试在通过 USB 连接到我的 Mac 的物理 IOS 设备上构建和运行该应用程序。当我运行调试器时,出现以下错误:
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk.net8.0_18.0/18.0.8303/targets/Xamarin.Shared.Sdk.targets(1455,3): error : clang exited with code 1: [/Users/user/Projects/cds-tims-mobile-client/TIMS.csproj]
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk.net8.0_18.0/18.0.8303/targets/Xamarin.Shared.Sdk.targets(1455,3): error : In file included from /Users/user/Projects/cds-tims-mobile-client/obj/Debug/net8.0-ios/ios-arm64/linker-cache/registrar.mm:3: [/Users/user/Projects/cds-tims-mobile-client/TIMS.csproj]
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk.net8.0_18.0/18.0.8303/targets/Xamarin.Shared.Sdk.targets(1455,3): error : /Users/user/Projects/cds-tims-mobile-client/obj/Debug/net8.0-ios/ios-arm64/linker-cache/registrar.h:257:43: warning: 'retain (or strong)' attribute on property 'window' does not match the property inherited from 'UIApplicationDelegate' [-Wproperty-attribute-mismatch] [/Users/user/Projects/cds-tims-mobile-client/TIMS.csproj]
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk.net8.0_18.0/18.0.8303/targets/Xamarin.Shared.Sdk.targets(1455,3): error : 257 | @property (nonatomic, assign) UIWindow * window; [/Users/user/Projects/cds-tims-mobile-client/TIMS.csproj]
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk.net8.0_18.0/18.0.8303/targets/Xamarin.Shared.Sdk.targets(1455,3): error : | ^ [/Users/user/Projects/cds-tims-mobile-client/TIMS.csproj]
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk.net8.0_18.0/18.0.8303/targets/Xamarin.Shared.Sdk.targets(1455,3): error : /Users/user/Projects/cds-tims-mobile-client/obj/Debug/net8.0-ios/ios-arm64/linker-cache/registrar.h:289:43: warning: 'retain (or strong)' attribute on property 'window' does not match the property inherited from 'UIApplicationDelegate' [-Wproperty-attribute-mismatch] [/Users/user/Projects/cds-tims-mobile-client/TIMS.csproj]
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk.net8.0_18.0/18.0.8303/targets/Xamarin.Shared.Sdk.targets(1455,3): error : 289 | @property (nonatomic, assign) UIWindow * window; [/Users/user/Projects/cds-tims-mobile-client/TIMS.csproj]
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk.net8.0_18.0/18.0.8303/targets/Xamarin.Shared.Sdk.targets(1455,3): error : | ^ [/Users/user/Projects/cds-tims-mobile-client/TIMS.csproj]
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk.net8.0_18.0/18.0.8303/targets/Xamarin.Shared.Sdk.targets(1455,3): error : /Users/user/Projects/cds-tims-mobile-client/obj/Debug/net8.0-ios/ios-arm64/linker-cache/regist [/Users/user/Projects/cds-tims-mobile-client/TIMS.csproj]
9 Warning(s)
1 Error(s)
我认为这里的相关部分是
warning: 'retain (or strong)' attribute on property 'window' does not match the property inherited from 'UIApplicationDelegate' [-Wproperty-attribute-mismatch] [/Users/user/Projects/cds-tims-mobile-client/TIMS.csproj]
我用谷歌搜索了一下并尝试了一些东西。我更改了我的 AppDelegate 文件:
using Foundation;
using UIKit; // Add this to resolve UIWindow
namespace TIMS;
[Register("AppDelegate")]
public class AppDelegate : MauiUIApplicationDelegate
{
[Export("window")]
public override UIWindow? Window { get; set; }
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
}
添加这部分:
[Export("window")]
public override UIWindow? Window { get; set; }
这并没有改变任何事情。 Github 上也有人建议将
MtouchLink
文件中的 csproj
设置为 sdkOnly
:
<MtouchLink>SdkOnly</MtouchLink>
但这也没有帮助。我还确保删除了
obj
和 bin
文件夹并重试,但这仍然没有帮助。
如有任何帮助,我们将不胜感激。
编辑:
经过进一步测试,我不确定我是否走在正确的轨道上。我已将我的应用程序委托类更改为如下所示:
using Foundation;
namespace TIMS;
[Register("AppDelegate")]
public class AppDelegate : MauiUIApplicationDelegate
{
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
}
我仍然遇到同样的错误。
我对此进行了一些研究,我的问题似乎更具体是这样的:
我的
window
属性 (nonatomic, assign)
上的属性与 UIApplicationDelegate
期望的 (retain or strong)
不匹配。行 @property (nonatomic, assign) UIWindow * window;
位于自动生成的 Objective-C 头文件 (registrar.h)
中,该文件是在 Xamarin 或 .NET MAUI iOS 项目的构建过程中生成的。它是 Xamarin.iOS 或 .NET MAUI 工具链生成的 Objective-C 互操作代码的一部分,负责构建过程中 C# 和 Objective-C 之间的封送。
所以我需要找到一种方法让我的
AppDelegate
生成线@property (nonatomic, strong) UIWindow * window;
而不是@property (nonatomic, assign) UIWindow * window;
。
警告:属性“window”上的“保留(或强)”属性不 匹配从“UIApplicationDelegate”继承的属性 [-W属性属性不匹配] [/Users/user/Projects/cds-tims-mobile-client/TIMS.csproj]
但该应用程序从未在我的手机上实际构建或运行。随后每次我尝试在手机上运行它时都会遇到完全相同的错误 正如我上面的应用程序
您可以报告您在此问题上的情况:警告属性上的“保留(或强)”属性...#10722,或在MAUI GitHub问题上为其创建一个新问题。让我们的开发人员了解并处理它。