You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 MAUI iOS项目window属性不匹配编译错误求助

.NET 8 MAUI iOS真机构建错误:window属性属性不匹配解决方法

问题概述

在连接Mac上的iOS真机构建调试.NET 8 MAUI iOS应用时,出现clang编译失败,核心问题是自动生成的Objective-C头文件registrar.h中,window属性被错误定义为assign修饰符,与UIApplicationDelegate要求的retain/strong不匹配,触发以下警告并导致编译错误:

warning: 'retain (or strong)' attribute on property 'window' does not match the property inherited from 'UIApplicationDelegate' [-Wproperty-attribute-mismatch]

已尝试的无效方案:

  • 在AppDelegate中添加带[Export("window")]标记的重写Window属性
  • 项目csproj中设置<MtouchLink>SdkOnly</MtouchLink>
  • 删除obj、bin目录后重新构建

解决方案

1. 用[StronglyTyped]特性修正属性生成

在AppDelegate的Window属性上添加[StronglyTyped]特性,强制生成Objective-C属性时使用strong修饰符:

using Foundation;
using UIKit;

namespace TIMS;

[Register("AppDelegate")]
public class AppDelegate : MauiUIApplicationDelegate
{
    [Export("window")]
    [StronglyTyped]
    public override UIWindow? Window { get; set; }

    protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
}

修改完成后,清理项目(删除obj、bin)并重新构建,此时生成的registrar.h中window属性会变为@property (nonatomic, strong) UIWindow * window;,与UIApplicationDelegate的定义匹配。

2. 禁用特定警告临时规避

若方法1无效,可在项目csproj文件中添加以下配置,禁用导致错误的属性不匹配警告:

<PropertyGroup>
  <MtouchExtraArgs>-Wno-property-attribute-mismatch</MtouchExtraArgs>
</PropertyGroup>

此方法属于临时解决方案,仅用于快速通过构建,建议优先使用方法1从根源修复问题。

3. 更新.NET MAUI SDK到最新补丁版本

该问题可能是.NET 8 MAUI iOS SDK的已知缺陷,尝试更新到最新的.NET 8 MAUI iOS SDK补丁版本(如18.0.x的后续更新包),官方可能已修复自动生成属性修饰符的问题。

内容的提问来源于stack exchange,提问作者Cole Perry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:37:02