MAUI 错误:属性“window”上的保留(或强)属性与从 UIApplicationDelegate 继承的属性不匹配

问题描述 投票:0回答:1

我有一个 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;

c# ios xamarin maui
1个回答
0
投票

警告:属性“window”上的“保留(或强)”属性不 匹配从“UIApplicationDelegate”继承的属性 [-W属性属性不匹配] [/Users/user/Projects/cds-tims-mobile-client/TIMS.csproj]

但该应用程序从未在我的手机上实际构建或运行。随后每次我尝试在手机上运行它时都会遇到完全相同的错误 正如我上面的应用程序

您可以报告您在此问题上的情况:警告属性上的“保留(或强)”属性...#10722,或在MAUI GitHub问题上为其创建一个新问题。让我们的开发人员了解并处理它。

© www.soinside.com 2019 - 2024. All rights reserved.