问题标签 [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.

0 投票
2 回答
636 浏览

objective-c - 在Objective-C中从类别访问在类扩展中定义的属性:可能吗?

我的一门课MyClass很大,我想把它分成几类MyClass(A),,, MyClass(B)...。我的问题是某些方法MyClass+A使用@property了类扩展中定义的一个MyClass()

  • 我可以从类别中访问它吗?如果可以:如何访问?

  • 如果没有,还有其他方法可以继续吗?

0 投票
5 回答
13422 浏览

ios - Swift 包含 Array 的扩展

我正在尝试在 Array 中添加一个扩展方法,如下所示:

self.filter {$0 == obj}不要工作。编译器错误:

找不到接受提供的参数的“==”的重载

0 投票
5 回答
1671 浏览

c++ - 我需要帮助混合 C++ 代码和 Objective-C 代码

我正在为 XCode 中的 Blackmagic Design AV 设备编写设备驱动程序,并且在将 BMD 的 SyncController 类从他们的缩写示例代码(如下)中包含到我的纯 Objective-C 项目中时遇到了麻烦。

他们的 DecklinkAPI.h 文件包含丰富的 C++ 代码,所以当我尝试将这个头文件原样包含在一个 Objective-C 类中时,编译器在 API 深处窒息包括:未知类型名称“类”;您指的是 'Class' 吗?

我试图将 C++ 位捆绑到一个 Obj-C 类扩展中,如此所述,但没有太大成功。我从未做过任何 C++ 编程(也从未使用过 Obj-C 类扩展),所以这对我来说是一个新领域。

我不确定是否需要为我的 SyncController 对象创建一个额外的包装类,或者我是否可以在这个对象上做一个类扩展并将 C++ 位洗牌到 .mm 文件中。

我希望能够#include "SyncController.h"在没有编译器阻塞的情况下在 Objective-C 类中做一个(或其包装器)。

对此的任何帮助将不胜感激。

首先,这是我当前的 SyncController.h 文件:

接下来,这是我的(简化的)SyncController.mm 文件:

0 投票
2 回答
40 浏览

objective-c - 在扩展接口中声明成员与在实现中声明成员有什么区别?

对于我认为完全相同的事情,我看到了两种截然不同的行为。

在类扩展中定义我的私有成员,如下所示:

或者像这样在类实现中定义我的私有成员:

我使用此代码的方式是创建一个 ClassB 对象,使用该 ClassB 对象初始化一个 ClassA 对象,然后将 ClassA 对象添加到一个可变数组

当我使用第一种方法并在接口扩展中定义我的成员时,我看到可变数组中的每个元素确实是我所期望的。

但是,使用第二种方法,我看到我ClassB* b在对象中的指针ClassA总是指向最近创建的ClassB对象。也就是说,一旦-(void)init方法完成,每个对象中的ClassB指针都会指向我在其中创建的对象ClassAClassBcreateClassB3

这里发生了什么?

我还应该提到 ClassB 对象是一个 C++ 对象,这是一个 Objective-C++ 类。

0 投票
4 回答
520 浏览

objective-c - 在 Objective C、mac OS 中遇到类扩展问题。收到错误“NSInvalidArgumentException”,没有可见的@interface 声明选择器

我正在编写 Apple 开发人员 pdf 第 76 页的练习 3,位于类类别和扩展部分“使用 Objective C 编程”中,可在此处找到:( https://developer.apple.com/library/mac/documentation/cocoa /conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html )

我的 XYZPerson 标题如下所示:

我的实现文件如下所示:

然后在我的主文件中我有:

可能有不止一个错误与我提出的问题无关,我现在是 Objective C 的新手。我得到的确切编译器错误是在上面写着的那一行,

编译器错误显示,“ARC 语义问题。‘XYZperson’没有可见的@interface 声明选择器‘setWeight:’。

0 投票
1 回答
467 浏览

objective-c - Objective C 类扩展 - 如何用 readwrite 方法覆盖只读?

我无法理解如何用类扩展中编写的 readwrite 方法覆盖 readonly 方法。我的头文件中有一个只读方法,在我的实现文件中,我尝试使用类扩展来覆盖它。我刚刚在这个线程中询问了这个问题,我在其中包含了我所指的代码:Objective C, mac OS 中的类扩展遇到问题。收到错误“NSInvalidArgumentException”,没有可见的@interface 声明选择器

这里:Objective-C Succinctly:Categories and Extensions是我正在使用的另一个来源,它让我相信我应该能够使用类扩展名使用 readwrite 属性覆盖头文件中声明的只读属性。如果我错了,请纠正我,我是一个完全新手,只是想弄清楚基础知识。

0 投票
1 回答
137 浏览

objective-c - 简单的类扩展/继承说明

我已经编写 Objective-C 几年了,并决定回去学习基础知识以帮助我编写更好的代码。我正在尝试学习所有关于实例变量、继承和类扩展的知识。我一直在阅读这三个方面的内容,但有一件事让我大吃一惊。我有一个简单的应用程序,其中包含 2 个类,Person、Male(从 Person 继承),当然还有 Main(它导入 Male 类,因此能够访问 Person 和 Male 中的实例变量)。

代码很简单,为了篇幅我就不一一贴出来了。基本上 Main 采用这些变量并使用它们。这是让我难以置信的部分:

当我删除括号和变量声明时,如下所示:

代码仍然继承并执行得很好。

1.如果我们可以只创建两个属性,那么一开始就在那里声明它们有什么意义?

2.为什么要创建两个实例变量和属性来与之对应?

3.我知道我们可以在 .m 中声明变量,而不是让它们对类和子类的所有内容都是私有的。像这样:

这里有什么区别?我觉得我错过了很多基础知识。有没有一种简单的方式来看待这一切?

0 投票
2 回答
11563 浏览

c# - Identity 2.0:创建自定义 ClaimsIdentity 例如:User.Identity.GetUserById(int id) 用于每个请求验证

看到这个类似的问题:Need access more user properties in User.Identity

我想创建自定义身份验证方法以与我的 Razor 视图一起使用,该方法允许轻松访问IdentityUser与 User.Identity 对象相关的属性,但我不知道如何去做。我想创建几个类似于 , 等的自定义扩展User.Identity.GetUserName()User.Identity.GetUserById()而不是使用这个ViewContextExtension方法。我的身份验证类型目前是DefaultAuthenticationTypes.ApplicationCookieVS2013 MVC5 模板中的默认类型。正如 Shoe 所说,我需要在用户登录后插入此声明。

我的问题是:

您如何以及在何处创建具有this IIdentityIPrincipal 下的 out 参数的自定义声明?

这将允许我通过视图中的 CookieAuthentication 访问用户属性,以访问 DDD 设置中的实体,其中我在使用 Identity 2.0 的单个应用程序中有多个 DbContext。我最终将使用 WebAPI,但现在我希望它尽可能简单。我找到了这个 SO Q&A,但它适用于使用门票的 Web 表单。也不确定门票和代币之间的区别?

这是ViewContext从基本控制器使用的当前方法:

看法:

基本控制器.cs

扩展.cs

我正在寻找的是,但在哪里以及如何?

看法:

解决方案

我只是编辑了Extension.cs文件并使用了用于 _LoginPartial.cshtml 的 Base 控制器的继承并编辑了ViewContextExtension该类:

0 投票
1 回答
43 浏览

objective-c - xCode6 iOS8如何为现有类创建带有扩展名的文件?

如果我没记错的话,在 xCode 5 及以下版本中,项目导航器的“新建文件”选项包含一个模板,用于为现有类创建扩展。该选项位于“Cocoa Touch Class”旁边,允许输入基类名称。生成的文件具有类似“NSString+JSON.h”的形式

如何在 xCode 6 中创建类扩展?我是否从一个类文件开始,然后修改它,它的名称包括类别名称?

在此处输入图像描述

0 投票
2 回答
313 浏览

php - PHP检查是否从扩展类调用方法

我有两个类的代码

然后像这样的一些用法

你可以在这里查看代码http://goo.gl/Gq63Wk

如果从类“旧”中调用方法 query(),我希望更改该变量 $fromClassOld。

类旧不能修改。

我通过使用 debug_backtrace() 并检查变量 debug_backtrace()[0]['file'] 发现了 hack,但我很确定这可以以更好的方式解决。