问题标签 [class-extensions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 类扩展如何作为实现私有方法的一种手段
我相信在 Objective-C 中声明“私有方法”的一种流行方式是创建它的类扩展并声明您想要设为私有的方法。
我想更详细地了解类扩展如何使这些方法作为私有方法工作。
- 更新:我用不正确的术语空类别问了这个问题。我现在将其更改为类扩展
objective-c - 类扩展的语法是否改变了?
我有如下代码:
在 XCode 4.0.2 中编译时效果很好
现在我对 XCode 4.2 + iOS SDK 5.0 进行了升级(已经为这个愚蠢的想法责备自己)并且出现错误“预期标识符或 '(' 在 '{' 标记之前”。
任何帮助将非常感激。
objective-c - 为什么要让一个类私下遵守协议?
我一直在查看 Apple 的MVCNetworking 示例项目,其中的部分接口定义让AppDelegate
我感到困惑。在 .h 文件中,我们有这个:
但是在 .m 文件中,我们有这个:
所以这个类是私下遵守协议的。但是你为什么要这样做而不是在标题中公开声明呢?
java - 创建一个类的扩展?
在 C# 和 Objective C 等某些语言中,您可以创建类扩展。这意味着您可以向现有类添加其他方法,而无需扩展该类。这在Java中可能吗?
iphone - 将实例变量添加到 NSData
因此,我知道 Objective-C 中的类别可用于向类添加方法,而无需子类化。我也明白这些类别不能用于向类添加实例变量。
我做了一点关于类扩展的阅读,它可用于添加实例变量,但我不明白如何使用类扩展来修改现有的类,例如 NSData。
我的问题如下:
我有一个包含 NSURL 和 NSData 的核心数据模型。NSData 显示 NSURL 的数据。当视图需要显示数据时,我会进行以下检查: --- 如果 [NSData bytes] > 0,则显示 NSData。--- 否则,在 NSURL 获取数据并在返回时显示数据
很简单。但是,当 NSURL 更新时,我遇到了问题。因此,如果我用新图像修改 NSURL 路径,因为 [NSData bytes] 已经大于 0,我不会进行额外调用来获取新图像。
我想做的是向 NSData 添加一个名为 URLKey 的实例变量,该变量将保存有关数据来源的信息。我不能继承 NSData,因为我使用的是 CoreData。
有谁知道一些简单的解决方案?也许我对类扩展的理解存在差距,或者也许没有简单的方法。
ruby - 在 ruby 中扩展/修补库的最干燥方法是什么?
我想知道用 ruby 编写现有库的模块化扩展以改变现有方法的最佳方法是什么。它不应引入代码重复,应仅按需使用。
我试图完成的具体任务是扩展 ruby 的Net::FTP
模块以支持一些不太符合标准的服务器。这样的扩展应该与标准兼容库恕我直言完全分开。
我认为需要一个额外的文件会非常好,因为这甚至不会构成在原始代码中进行某种切换的必要性。因此,对于我们不太有天赋的 FTP 服务器研究员来说,额外的内容require 'net/ftp/forgiving'
将使原始库更加宽容。
然后,相关文件可以利用 ruby 的开放类和模块架构来修补 FTP 类。为了修复上面链接的古怪行为示例,我需要修补Net::FTP#mkdir
. 看起来像这样:
然而,这需要以某种方式缓存原始代码Net::FTP#mkdir
以Net::FTP#original_mkdir
保持代码干燥。这可能吗?您对如何改进这种修补/扩展方法有任何进一步的建议吗?或者甚至可能完全不同的方法?
objective-c - 将 ivar 放在类扩展中有什么问题?
根据此处的 Apple 文档,这应该适用于我的代码:
如果我不尝试声明 iVar,这将有效。一旦我添加了花括号以及它们之间的内容,我就会收到这个漂亮的红色警告:
'{' 标记之前的预期标识符或 '('
这里发生了什么?
objective-c - *.h 和 *.m 文件中的两个接口
对不起我的英语,让我发自内心的说:) 在我工作的一个项目中,我注意到了一个有趣的时刻。
在 *.h 文件中声明接口:
在 *.m 文件中我找到了另一个接口。
为什么需要它?有什么意义呢?-我认为这是为了方便。是的?
objective-c - 关于类别的客观 C 解释?
在我的菜鸟头脑和程序中,当我为一个类创建一个类别时,我在一个新文件中创建它
像NSArray+Shuffle.h and .m
但我注意到,当我创建例如一个 ViewController 时,
我在实施中有:
所以我的问题是:
是什么
部分?,这是用于类别吗?或者有什么用?,如果是用于类别,为什么在这里使用它而不是在一些新文件中?
谢谢!
objective-c - Objective-c 中的 C# 样式类扩展
经过大量的 C# 经验后,我只是在学习 Objective-c。我非常想念的一件事是能够在一个单独的项目中编写扩展方法,我可以在我的所有项目中引用它。这是一些天真的c#:
在 Visual Studio 中,我可以只添加一个引用 an using
,而 bammyString.IsShortString()
将是一个相当无用的方法。
所以我想我想写一个静态库,但我不确定我从那里去哪里。
还有一个问题,如果我确实编写了这个静态库,我是否能够使用一个#import
指令在库中的各种文件中使用所有方法,还是必须单独导入每个标头?