这是拥有类级别成员变量的好方法吗?

发布于 2024-11-16 15:39:04 字数 595 浏览 1 评论 0原文

我试图通过使用具有 setter 和 getter 的静态(类级别)变量来稍微违反 Objective C 的法则:

+(CGRect*)defaultOpFr:(CGRect*)set{
    static CGRect * defaultOpFr = nil;

    if (set) {
        if (!defaultOpFr) {
            defaultOpFr = malloc(sizeof(defaultOpFr));
        }
        defaultOpFr->size.width = set->size.width;
        defaultOpFr->size.height = set->size.height;
        defaultOpFr->origin.x = set->origin.x;
        defaultOpFr->origin.y = set->origin.y;
    }
    return defaultOpFr;
}

它似乎有效,但我想知道是否有更好的方法。这个想法是用 nil 调用它来检索值,用 CGRect 调用它来设置新值。

I'm trying to violate the laws of objective C a little by having static (class level) variables that have setters and getters:

+(CGRect*)defaultOpFr:(CGRect*)set{
    static CGRect * defaultOpFr = nil;

    if (set) {
        if (!defaultOpFr) {
            defaultOpFr = malloc(sizeof(defaultOpFr));
        }
        defaultOpFr->size.width = set->size.width;
        defaultOpFr->size.height = set->size.height;
        defaultOpFr->origin.x = set->origin.x;
        defaultOpFr->origin.y = set->origin.y;
    }
    return defaultOpFr;
}

It seems to work, but I'm wondering if there's a better way. The idea is to call it with nil to retrieve the value, call it with a CGRect to set a new value.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

锦上情书 2024-11-23 15:39:04

是的;这会起作用,但完全反对任何类型的常见模式。

为什么不简单地拥有一个标准的 setter/getter 对呢?即使在班级层面,这也很好:

static CGRect barf;
+ (CGRect) barf { return barf; }
+ (void) setBarf:(CGRect)aRect { barf = aRect; }

完成。

Yup; that'll work, but be completely against any kind of common pattern.

Why don't you simply have a standard setter/getter pair? Even at the class level, that is fine:

static CGRect barf;
+ (CGRect) barf { return barf; }
+ (void) setBarf:(CGRect)aRect { barf = aRect; }

Done.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文