gpt4 book ai didi

iphone - Objective-C 私有(private)方法困境

转载 作者:技术小花猫 更新时间:2023-10-29 11:00:16 24 4
gpt4 key购买 nike

我知道 Objective-C 不支持真正的私有(private)方法。我目前正在做的声明“私有(private)”方法是将以下内容添加到类 .m 文件中:

@interface MyClass() 

- (void) privateMethodName;

@end


问题:

如果我现在添加一个子类,并想使用这个“私有(private)”方法,我不能!我收到错误:

Receiver type 'SubClassName' for instance message does not declare a method with selector 'privateMethodName'


那么,如果我不希望非子类能够访问这个方法,但又希望子类能够访问,我该怎么办?实现我的目标的最佳/正确方法是什么?

最佳答案

您可以将“ protected ”接口(interface)与公共(public)接口(interface)分开。在主 header 中,只需声明公共(public)方法:

MyMagicThingy.h:

@interface MyMagicThingy: NSObject

- (void) publicMethod;

@end

然后,有一个带有 protected 方法的附加 header :

MyMagicThingy+Protected.h:

#import "MyMagicThingy.h"

@interface MyMagicThingy (Protected)

- (void) protectedMethods;

@end

您不能在 Objective C 中拥有“真正的”私有(private)/ protected /公共(public)方法(例如:编译器将强制执行访问规则。所有方法都是公共(public)的)。你必须遵守约定。

关于iphone - Objective-C 私有(private)方法困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8755541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com