问题标签 [ivar]

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 投票
3 回答
3651 浏览

iphone - iOS,使用下划线与直接使用 iVar

很多人都问过这个问题,但是这个问题是为了获得有关何时使用这些方法的示例。请使用 setter 和 getter 无限循环以外的示例

例子。

.h -
@property(nonatomic, strong)NSMutableArray* mutArray
.m -
@synthesize mutArray= _mutArray;

1)我想要:
_mutArray = [[NSMutableArray alloc] init];
或者
self.mutArray=[[NSMutableArray alloc] init];
我为什么要做每一个,有什么区别?!

2)如果我想向它添加一个对象......
[_mutArray addObject:object];
或者
[self.mutArray addobject:object];

为什么?

非常感谢!

0 投票
2 回答
382 浏览

objective-c - 防止在允许 [super init] 的同时调用 ObjC“抽象”类的 init 方法?

假设我有一个用户不应该实例化的伪抽象基类。基本上,当他们尝试在类上调用 init 或返回具有默认值的具体实例之一时,我想发出警告。

但是,该基类的具体实现必须调用[super init]它们的初始化程序。这当然应该被允许。

我最好怎么做?

我在想这应该没问题:

对这种方法有任何顾虑吗?我知道其他人仍然可以调用内部方法,但我最关心的是不允许init,因为这是用户首先尝试调用的方法。

0 投票
1 回答
148 浏览

objective-c - Objective-C:使用静态变量

给定下面的代码,宇宙飞船(程序中只有一个)会检查它是否可以支付新零件的费用,然后“如果(是)”就建造它。发送消息时payFor:,应该像下面那样处理 iVar,还是应该像每个事务一样使用方法+(void)deduct: (ShipObject *) cost;,或者我应该使用struct和使用结构算术?

感谢您的任何见解!

0 投票
1 回答
1772 浏览

objective-c - 在 theos 错误中挂钩 IVAR

我已经解密了一些头文件,这是我想从中挂钩一些 ivars 的头文件。

所以我想挂钩 gatingChecker ivar,我使用了 logify 并创建了这些行:

当我尝试编译它时,我得到:

0 投票
2 回答
504 浏览

ruby - 在 Ruby 中显式设置 iVar 类(ala Obj-C)

我是一位经验丰富的 Obj-C/Java 程序员,并且正在研究 Ruby。显然,它是如此动态的事实很棒(重新开放课程很棒!)但是当我开始编写 Ruby 代码时,有一件事让我感到烦恼/担心。

我很想知道你们 Ruby-ers 做了什么(如果有的话)来明确地在自己的类中设置 iVar 的类型。据我所知,您可以为任何对象设置 iVar,而 ruby​​ 不会抱怨。但是,如果您希望特定 iVar 属于某种类型,那么它可能会导致问题。例如:

这段代码会抛出一个NoMethodError,因为数组当然没有方法upcase。不幸的是,它并没有告诉我们真正出错的地方(上面的行,创建时str2)所以我们在调试时没有多大帮助(如果str2碰巧在一些不显眼的地方创建了几个模块)一个自然的步骤可能是添加一些检查initialize如下:

太好了,现在如果我们不小心创建了一个新的 MyString,我们会被告知我们是多么愚蠢(更重要的是,当我们这样做而不是失败时,我们会被告知。打字有点痛苦,但没关系。我的下一个问题是我们决定attr_accessors在 iVar 上使用的时候。

使用定义的 setter,我们可以偷偷摸摸地绕过错误检查initialize。这再次存在抛出异常的问题,uppercase_my_string而不是当我们意外设置@my_string为数组时。

最后,我们可以手动创建访问器并添加错误检查,但这是一个巨大的痛苦......有没有更快更简单的方法来做到这一点。还是我只是思想封闭,不够有活力?

谢谢!


旁白:我知道在 Obj-C 中你在运行时仍然有同样的问题,但通常你会发现编译器错误,说你正在将一个类型的对象分配给一个类型array的变量string(或类似的东西),所以至少我们被警告发生在哪里

0 投票
0 回答
92 浏览

appdelegate - 从 appdelegate 访问视图控制器 ivar

我在视图控制器类中使用 NSURLConnection 创建了一个连接。当 AppDelegate 调用 applicationWillResignActive 方法时,我想确保我的连接为零。

我不知道如何从 AppDelegate 调用该 ivar。这个网站上有一个答案:

如何在 appDelegate 和/或其他视图控制器中使变量可访问?

这可能有效,但还有其他方法吗?

谢谢

0 投票
1 回答
219 浏览

objective-c - 在二进制文件中更改 OBJC_IVAR_$

在旧版本的框架中,有两个类,A 和 B,A 是 B 的子类。在较新的版本中,B 不再存在,B 中的所有内容(ivars 等)现在都在 A 中。可执行文件是链接到旧版本,因此它会查找 _OBJC_IVAR__$_B.ivar。但是我需要它在新版本上工作(我不能重新编译它)。那么有没有办法改变对 _OBJC_IVAR__$_A.ivar 的引用呢?

0 投票
1 回答
18168 浏览

objective-c - 需要在 Objective-C 中声明一个公共实例变量

我正在尝试为 Objective-C 中的自定义按钮类(适用于 iOS)声明一些实例变量:

但是,这些现在是私有的,我需要其他类可以访问它们。我想我可以为它们创建访问器函数,但我如何将变量本身公开?

0 投票
2 回答
697 浏览

objective-c - 将 C 数组放入 Objective-C 结构属性中的令人惊讶的失败

我知道 Objective-C 不允许你使用 C 数组作为属性类型。在这种情况下,我得到了我期望的编译器错误。

但我对我在结构属性中看到的关于 C 数组的行为感到惊讶:

  • 没有编译错误或警告。
  • 地址本身的意外地址(gdbinfo malloc不知道它,不确定它是未初始化的内存还是什么。但我预计会发生崩溃或明显工作,尽管内存损坏)。
  • 分配变成了无操作。

我把它归结为这个示例代码:

对我上面的困惑点有什么解释吗?

0 投票
1 回答
300 浏览

objective-c - Objective C 惯用语 - 属性、变量和需求显示

这是我经常遇到的一种情况,足以使样板代码浪费,而且我确信我不能是唯一的。这是单调的,有没有更好的方法,还是我每次都必须这样做?

现在这引发了一个编译警告,我没有吸气剂,我可以添加

但是现在,它抱怨我没有 ivar(因为定义的 getter 和 setter 意味着没有为我创建一个),所以我需要添加

这意味着我们只是想在属性更改时强制显示更新,因此开销很大。

是否有(a)某种方式告诉 ObjC 我确实打算为我创建 getter 和 ivar,所以我只需要编写 setter,或者(b)当属性相关时请求显示更新的更好方法视觉外观变化?

Apple 的 SDK 是如何做到这一点的(我假设我没有错过某种查看方式,比如 UILabel 来源)?