首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MonoTouch [Outlet]的作用域

MonoTouch [Outlet]的作用域
EN

Stack Overflow用户
提问于 2012-08-24 21:34:06
回答 2查看 219关注 0票数 0

当我在Xcode中创建outlet时,MonoTouch在*.designer.cs文件中为该特定视图创建了相同的属性。

代码语言:javascript
复制
namespace MyApp
{
    [Register ("CustomCell")]
    partial class CustomCell
    {
        [Outlet]
        MonoTouch.UIKit.UISwitch Toggle { get; set; }

        void ReleaseDesignerOutlets ()
        {
            if (Toggle != null) {
                Toggle.Dispose ();
                Toggle = null;
            }
        }
    }
}

但正如您所看到的,将这些属性的作用域设置为私有。

有没有办法通过XCode或MonoTouch告诉系统这些内容应该生成为公共的、受保护的或内部的?

当然,我可以在这个分部类的实现端公开属性,作为这些属性的代理,但我希望有一种更干净的方法。

EN

回答 2

Stack Overflow用户

发布于 2012-08-25 07:24:16

不要担心它们是属性,这是outlets的实现细节。你可以把它们看作私有字段--所以在非设计器类部分通过更易访问的属性来公开它们是很好的。

另一种使它们更容易访问的方法是将它们移动到非设计器类部分。Outlet不一定要在designer类中。

同步的工作原理:

设计器文件的工作方式是,当MD同步到Xcode时,它会找到类的所有部分上的所有插座,包括designer类,并将它们同步到obj-c头文件中。当它将obj-c头文件同步回MD时,它会尝试查找非designer类部分中的每个outlets,然后使用不匹配的outlets重新生成designer文件。

这意味着如果您在obj-c头文件中添加一个outlet,它将被添加到designer文件中。这还意味着,如果您在obj-c头文件中删除一个outlet,那么当重新生成设计器文件时,它将有效地从设计器文件中删除-除非它位于其他类部分中,在这种情况下,删除将不会同步。

obj-c头文件中的插座没有任何可访问性,因此MD在重新生成头文件时无法同步,而private是一个很好的默认值,因为它促进了封装,如果需要,您可以通过包装器属性或移动它们轻松地公开它们。

票数 2
EN

Stack Overflow用户

发布于 2012-08-25 02:31:01

目前还没有办法让MonoDevelop为暴露的网点生成不同的可见性属性。

您脑海中的用例场景是什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12110473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档