gpt4 book ai didi

iphone - Objective-C 包级属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:49:37 25 4
gpt4 key购买 nike

我正在创建一个 iPhone 自定义框架,它应该能够集成到任何 iPhone 应用程序中。

我在我的框架的一个公共(public)头文件中创建了一些属性。我想授予对这些属性的 @package 级别访问权限,以便只能在框架内的类中访问这些属性。

我不希望用户使用这些属性。

请告诉我这样做是否可行。如果是,请给我一些关于如何实现这一目标的想法!

最佳答案

首先你应该知道没有办法完全禁止你的库的用户调用一个方法。即使您没有在 header 中声明它,用户也可以自行声明并使用它。不过,他仍然需要找出您的属性(property)的名称,例如通过在您的图书馆上运行 classdump。

因此在 Objective-C 中,我们通过不在 header (这是您类的公共(public)部分)中声明它们来将属性设为私有(private),而是通过在实现中声明它们(这是您类的“私有(private)”部分) .

如果您创建另一个包含类类别的 header ,您可以向其添加一些属性,这些属性不会出现在主 header 中 - 因此不会出现在您的类的公共(public)声明中 - 但仍然可以被其他人导入了解此 header 的库类。

例如:

MyClass+SecretProperties.h:

@interface MyClass ()
@property (strong) NSString *secretString;
@end

MyClass.m:

#import "MyClass.h"
#import "MyClass+SecretProperties.h"
@implementation MyClass
@synthesize secretString; // Depending on your runtime, you may not even need to this - properties are auto-synthesized in the latest SDKs.

@end

OtherClass.m:

#import "MyClass.h"
#import "MyClass+SecretProperties.h"

// Now you can use secretString on instances of MyClass

然后因为你只用你的库导出 MyClass.h,用户不知道有一个 secretString 属性 :) 这是你可以得到的最接近 @package 范围 AFAIK。

关于iphone - Objective-C 包级属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14040867/

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