我怎样才能使其成为类的私有成员或方法,以便可以在静态库本身内部而不是在库外部访问它?

2024-03-30

我想为 Objective-C 中的以下类准备小型静态库: A类、B类、C类。我想将这些类包含在静态库中。现在,A 类可以访问 B 类或 C 类方法的公共成员。

现在当我将上述库集成到其他项目中时, 我准备了D类,只能访问A类和B类 不是 C 类。我该怎么办?

我的另一个疑问是假设 NSString *isValid 在 B 类中声明。

我希望上面的变量可以从 A 类和 C 类访问 我的意思是库的包含文件可以访问上面的变量。

但无法从外部库访问上述变量。 如何将其设为私有,以便可以在图书馆内部而不是在图书馆外部访问它?

感谢帮助 !


您可以使公共方法仅对静态库可见,但在其外部不可见。

以下是具体操作方法。

1) 创建一个要在库外部使用的头文件

#import <Foundation/Foundation.h>

@interface ClassA : NSObject 

@property(nonatomic,readwrite)BOOL publicProperty;

-(void)publicMethod;

@end

2)创建一个仅供静态库内部使用的类别

#import "ClassA.h"

@interface ClassA (Internal)

@property(nonatomic,readwrite)BOOL privateProperty;

-(void)privateMethod;

@end

Note将此文件命名为:“ClassA+Internal.h”

3)在.m文件中再次声明你的私有属性和方法

#import "ClassA.h"

@interface ClassA ()

@property(nonatomic,readwrite)BOOL privateProperty;

-(void)privateMethod;

@end

@implementation ClassA

@synthesize publicProperty;
@synthesize privateProperty;

//...

@end

在静态库中使用私有属性和方法

在你的ClassB.m文件中导入ClassA类别的头文件

#import "ClassB.h"
#import "ClassA.h"
#import "ClassA+Internal.h"

现在您可以访问 A 类的私有属性和方法

创建没有私有属性和方法的静态库

创建静态库时,将“ClassA+Internal.h”类别头文件保留在“构建阶段”、“复制标头”的“私有”或“项目”标头部分中

这样,当您构建静态库时,外部将无法访问 ClassA+Internal.h 类别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我怎样才能使其成为类的私有成员或方法,以便可以在静态库本身内部而不是在库外部访问它? 的相关文章

  • 使用 iPhone 中的地图视图读取当前位置名称

    我读取了当前位置的纬度和经度值 然后成功将该位置固定在 iPhone 中 现在我想使用这个纬度和经度值读取该地名 我使用以下代码来读取查找当前位置 void mapView MKMapView mapView1 didUpdateUserL
  • Parse.com 从相关 PFObject 获取 PFUser

    我正在将照片保存为 PFObject 解析 并使用 PFUser currentUser 用户 ID 作为其键之一 我想在表格视图中显示照片以及该 PFUser 的详细信息 但是当我尝试获取用户时 PFUser user self phot
  • 如何在 iOS 9 上可靠地检测是否连接了外部键盘?

    在 iOS 9 之前 确定是否连接外部键盘的最可靠方法是监听UIKeyboardWillShowNotification并使文本字段成为第一响应者 如中所述这个问题 https stackoverflow com questions 289
  • 如何使用 NSUserDefaults 在 Swift 中存储自定义类的数组?

    我有一个名为的自定义类Person当某人输入信息时 它会存储有关某人的各种属性 class Person Person dictionary variable var name String var age String var html
  • 导入 RNCryptor 后架构 armv7 的未定义符号

    我导入了 RNCryptor 可以在这里找到 https github com rnapier RNCryptor https github com rnapier RNCryptor进入我的应用程序 但是 我在日志中收到了三个错误 Und
  • 在 Xcode 5 中重命名 iOS 项目[重复]

    这个问题在这里已经有答案了 我需要重命名一个 iOS 项目 有没有办法在不开始一个全新项目的情况下做到这一点 我发现的所有其他信息都与 Xcode 4 或旧版本相关 这些方法似乎使项目崩溃 我在尝试任何名称更改之前创建了一个快照 在 Xco
  • 如何使用AudioKit保存音频文件?

    我有音频文件 我给它做了一些效果 let pitchshifter AKPitchShifter self audioPlayer pitchshifter shift 10 AudioKit output pitchshifter 如果我
  • 适用于 iPhone / iPad / iOS 的快速、精益 PDF 查看器 - 提示和提示?

    最近有很多关于绘制 PDF 的问题 是的 您可以使用UIWebView但这无法提供您所期望的优秀 PDF 查看器的性能和功能 您可以绘制PDF页面到 CALayer http www cocoabuilder com archive coc
  • UIButton的高亮状态由什么控制事件开始和结束

    我正在创建类似钢琴的视图UIButton作为钢琴键 什么UIControlEvents当按钮获得和失去突出显示状态时 我应该监听以获得回调吗 我试图创建子类UIButton并添加属性观察者highlighted并且运行良好 然而 有时我需要
  • 覆盖层不与 UITableView 一起滚动 - iOS

    我有一个 UITableView 类 它使用以下方法在转到下一个屏幕时调用加载覆盖 问题是这个加载屏幕不随列表滚动 所以如果你滚动一点并单击某些东西 加载屏幕不会显示 因为它位于顶部 如何让加载屏幕始终保持在 UITableView 的顶部
  • 在 XCode 中链接静态 ObjC 库的过程

    我正在尝试链接到静态库 但不断收到链接器错误 我发现了一些发布示例的网站 但我无法看到我做错了什么 首先 我创建一个链接到我的库的项目 添加 gt 现有文件找到我的 xcodeproj 文件选择 将项目复制到目标组文件夹 选择我的宿主项目作
  • 如何禁用 iPhone 邮件应用程序中的电话号码链接?

    我的公司正在发送数字电子邮件收据 但遇到了 iPhone Mail 检测数字数据并将其自动链接为电话号码的问题 我已经看到元标记应该可以解决 iPhone 上的 Mobil Safari 中的问题 但该技巧似乎不适用于 Mail 有谁知道如
  • 在 iOS 中,如何创建一个始终位于所有其他视图控制器之上的按钮?

    无论是否呈现模态或用户执行任何类型的转场 有没有办法让按钮在整个应用程序中 始终位于顶部 而不是屏幕顶部 有什么方法可以让这个按钮可拖动并可捕捉到屏幕上吗 我正在以苹果自己的辅助触摸作为此类按钮的示例 您可以通过创建自己的子类来做到这一点U
  • 如何将 ios7 通用应用程序升级到基于 Xcode 6 的通用故事板应用程序?

    我目前有一个基于 xcode 5 ios 7 的通用应用程序 因此有两个故事板 我正在考虑将其更新到 ios 8 有没有办法 最佳方法将两个故事板迁移到通用的单个故事板 我在 xcode 6 中看不到转换选项 None
  • 水平 UICollectionView 单行布局

    我正在尝试使用以下命令设置简单的水平布局UICollectionView 兜圈子却没有达到预期的结果 所以任何指针或例子将不胜感激 我粘贴经常更改的代码但没有成功可能没什么意义 该图像显示两行 第一行是单个项目 尺寸正确并且在中心正确对齐
  • 如何阻止 UITableView moveRowAt IndexPath 在重新排序时留下空白行

    我遇到一个问题 在重新排序 UITableViewCells 时 tableView 不随单元格滚动 仅出现一个空白行 任何后续滚动都会出现数组越界错误 堆栈跟踪中没有我的任何代码 这是该问题的快速视频 http www screencas
  • PFQueryTableViewController 错误

    我正在遵循在线教程 使用 Parse 作为后端创建照片共享应用程序 我已经运行了两次教程 两次都从头开始创建应用程序 但在同一位置仍然出现相同的错误 我到处寻找解决方案 但仍然没有运气 我正在使用 PFQueryTableViewContr
  • Xcode 8 / Swift 3:“UIViewController 类型的表达式?未使用”警告

    我有以下函数 它之前编译得很干净 但在 Xcode 8 中生成警告 func exitViewController navigationController popViewController animated true UIViewCon
  • UIView晃动动画

    我试图在按下按钮时使 UIView 摇动 我正在调整我找到的代码http www cimgf com 2008 02 27 core animation tutorial window shake effect http www cimgf
  • 在发生更改事件时将货币格式重新应用到 UITextField

    我正在使用一个包含本地化货币值的 UITextField 我看过很多关于如何使用此功能的帖子 但我的问题是 如何在每次按键后将货币格式重新应用到 UITextField 我知道我可以通过以下方式设置和使用货币格式化程序 NSNumberFo

随机推荐

  • .Net核心和插件

    本次讲座结束后 https learn microsoft com en us dotnet core tutorials creating app with plugin support https learn microsoft com
  • Spring Boot中无法拦截和操作HttpServletResponse

    我有一个要求Base64解码我的 Spring Boot 服务收到的每个 JSON 请求负载 JSON 有效负载将是Base64在使用 HTTP 发布之前在客户端进行编码POST方法 此外 我还需要Base64在呈现给调用客户端应用程序之前
  • 结构体接口

    当你定义一个新的struct最好也定义该类型的接口 即 setter 和 getter 函数 或直接通过 and gt 运营商 EDIT纯 C 编程 这取决于您的结构是否是抽象数据类型 如果您在标头中公开结构定义 则定义访问器没有任何意义
  • 如何使用简单注入器将依赖项注入到 WCF 属性中

    我有一堆与 REST 和 SOAP 配合使用的 WCF 服务 我创建了一个 WCF 属性 用于检查当前 httpcontext 是否存在 如果存在 则使用 cookie 身份验证 否则使用自定义 WCF 身份验证 我的属性如下所示 Publ
  • Android 颜色通知图标

    我正在开发一个为用户创建通知的应用程序 我希望图标在状态栏中显示为白色 但在下拉通知菜单中显示时显示为蓝色 以下是 Google Store 应用执行相同操作的示例 状态栏中的白色通知 下拉菜单中的彩色通知 我怎样才能复制这个 我必须设置哪
  • pjax :HTML 链接,其工作方式类似于浏览器后退按钮

    我使用 pjax 进行网站导航 我需要创建一个 HTML 后退按钮 其工作方式与浏览器后退按钮完全相同 但这应该是一个简单的 HTML 链接 如何创建导航到上一页的 pjax 链接 我搜索过 所有主题似乎都与浏览器后退按钮有关 这不是我想要
  • Apache Web 服务器在 60 秒后超时

    我在 IBM Softlayer 中运行的 apache Web 服务器 php 在 60 秒后遇到超时 这些是我的设置 这些设置后httpd服务器重新启动 httpd conf TimeOut 300 Timeout 300 同时尝试两者
  • 颤振行和列

    我是一个颤振初学者 如何创建无边框的 4 2 表格列之类的元素 我尝试过 但没有得到我想要的对齐方式 像这样 https i stack imgur com i1a3f jpg 有人可以指导我如何解决这个问题吗 这是我的有状态小部件的构建方
  • 如何改进 clisp 错误消息?

    我已经接触过一些clisp 有点令人困惑的是它没有打印出错误所在的行号 或者 至少给出错误所在的一般提示 在某些情况下这一定是可能的 对吧 有什么方法可以获得更好的错误消息吗 正如我看到的大多数涉及 clisp 的问题一样 答案可能是 不要
  • 请对我的示例 Python 程序进行代码审查 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我仍在学习
  • 在 javascript 排序调用之前强制更新 element.innerHTML

    这种情况的最佳实践是什么 1 用户点击 对巨大的javascript数组进行排序 2 浏览器通过element innerHTML Sorting 显示 Sorting 3 浏览器对巨大的 javascript 数组进行排序 100 CPU
  • 使用流畅语法的嵌套 GroupBy LINQ

    我正在尝试使用流畅的 即 方法 语法编写嵌套的 GroupBy LINQ 表达式 这是我的课程和数据 class Person public String ZipCode Gender Name private static List
  • NotImplementedError:无法对未注册的加载器类型执行此操作

    我正在编写一个小脚本来生成 HTML 文件 为此 我正在使用jinja2 这是我的脚本 在jinja2文档 coding utf 8 from jinja2 import Environment PackageLoader env Envi
  • Nuget 包有什么意义?

    也许我在这里做错了什么或者表达了纯粹的无知 但我真的看不出 Nuget 包有什么好处 我最近决定安装一些 Nuget 包来替换我的应用程序中的静态 DLL 当我检查包创建的文件夹时 它们似乎包含许多不同版本的 DLL 所有这些都嵌套在一系列
  • 重命名没有列名的 pandas 数据框的列[重复]

    这个问题在这里已经有答案了 我试图在 dataframe from dict 操作之后命名新数据帧的列 只需使用 pandas dataframe from dict 函数 df pd DataFrame from dict my dict
  • 如何在python2.7中安装gtk?

    我正在使用 Debian 6 04 和 Python 2 7我编译了Python 2 7 configure make make install 在控制台中 gt python2 7 Python 2 7 3 default Jul 28
  • 如何排序 unsort: array(1).sort 转换 array(2) -> array(3).unsort (反转 array(1).sort

    如何对结果进行排序 操作和取消排序 假设我有一个浮点数组p1 0 15 0 3 0 25 0 12 其排序为 p2 sort p1 一个函数 操作p2作为输入 导致p3 p3 f p2 x y 对于某些功能f 我怎样才能取消排序p3以最聪明
  • Jmeter中的“延迟时间”与“连接时间”有什么区别?

    我是jmeter 3 1用户 我不清楚 延迟时间 与 连接时间 的区别 事实上 在jmeter官方文档中 是这样说的 新的连接时间指标 connectTime 表示建立连接的时间 默认情况下 它不会保存到 CSV 或 XML 要保存它 请添
  • 为什么当我导入正在打印的同一文件时,Python 会打印两次输出?

    我一直在玩Python 因为我是Python的初学者 我写了以下 Parent 课程 这是我从 Udacity 在线课程中阅读的 继承 py 文件 import inheritance Why this import statement c
  • 我怎样才能使其成为类的私有成员或方法,以便可以在静态库本身内部而不是在库外部访问它?

    我想为 Objective C 中的以下类准备小型静态库 A类 B类 C类 我想将这些类包含在静态库中 现在 A 类可以访问 B 类或 C 类方法的公共成员 现在当我将上述库集成到其他项目中时 我准备了D类 只能访问A类和B类 不是 C 类