问题标签 [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.
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];
为什么?
非常感谢!
objective-c - 防止在允许 [super init] 的同时调用 ObjC“抽象”类的 init 方法?
假设我有一个用户不应该实例化的伪抽象基类。基本上,当他们尝试在类上调用 init 或返回具有默认值的具体实例之一时,我想发出警告。
但是,该基类的具体实现必须调用[super init]
它们的初始化程序。这当然应该被允许。
我最好怎么做?
我在想这应该没问题:
对这种方法有任何顾虑吗?我知道其他人仍然可以调用内部方法,但我最关心的是不允许init
,因为这是用户首先尝试调用的方法。
objective-c - Objective-C:使用静态变量
给定下面的代码,宇宙飞船(程序中只有一个)会检查它是否可以支付新零件的费用,然后“如果(是)”就建造它。发送消息时payFor:
,应该像下面那样处理 iVar,还是应该像每个事务一样使用方法+(void)deduct: (ShipObject *) cost;
,或者我应该使用struct
和使用结构算术?
感谢您的任何见解!
objective-c - 在 theos 错误中挂钩 IVAR
我已经解密了一些头文件,这是我想从中挂钩一些 ivars 的头文件。
所以我想挂钩 gatingChecker ivar,我使用了 logify 并创建了这些行:
当我尝试编译它时,我得到:
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
(或类似的东西),所以至少我们被警告发生在哪里
appdelegate - 从 appdelegate 访问视图控制器 ivar
我在视图控制器类中使用 NSURLConnection 创建了一个连接。当 AppDelegate 调用 applicationWillResignActive 方法时,我想确保我的连接为零。
我不知道如何从 AppDelegate 调用该 ivar。这个网站上有一个答案:
如何在 appDelegate 和/或其他视图控制器中使变量可访问?
这可能有效,但还有其他方法吗?
谢谢
objective-c - 在二进制文件中更改 OBJC_IVAR_$
在旧版本的框架中,有两个类,A 和 B,A 是 B 的子类。在较新的版本中,B 不再存在,B 中的所有内容(ivars 等)现在都在 A 中。可执行文件是链接到旧版本,因此它会查找 _OBJC_IVAR__$_B.ivar。但是我需要它在新版本上工作(我不能重新编译它)。那么有没有办法改变对 _OBJC_IVAR__$_A.ivar 的引用呢?
objective-c - 需要在 Objective-C 中声明一个公共实例变量
我正在尝试为 Objective-C 中的自定义按钮类(适用于 iOS)声明一些实例变量:
但是,这些现在是私有的,我需要其他类可以访问它们。我想我可以为它们创建访问器函数,但我如何将变量本身公开?
objective-c - 将 C 数组放入 Objective-C 结构属性中的令人惊讶的失败
我知道 Objective-C 不允许你使用 C 数组作为属性类型。在这种情况下,我得到了我期望的编译器错误。
但我对我在结构属性中看到的关于 C 数组的行为感到惊讶:
- 没有编译错误或警告。
- 地址本身的意外地址(gdb
info malloc
不知道它,不确定它是未初始化的内存还是什么。但我预计会发生崩溃或明显工作,尽管内存损坏)。 - 分配变成了无操作。
我把它归结为这个示例代码:
对我上面的困惑点有什么解释吗?
objective-c - Objective C 惯用语 - 属性、变量和需求显示
这是我经常遇到的一种情况,足以使样板代码浪费,而且我确信我不能是唯一的。这是单调的,有没有更好的方法,还是我每次都必须这样做?
现在这引发了一个编译警告,我没有吸气剂,我可以添加
但是现在,它抱怨我没有 ivar(因为定义的 getter 和 setter 意味着没有为我创建一个),所以我需要添加
这意味着我们只是想在属性更改时强制显示更新,因此开销很大。
是否有(a)某种方式告诉 ObjC 我确实打算为我创建 getter 和 ivar,所以我只需要编写 setter,或者(b)当属性相关时请求显示更新的更好方法视觉外观变化?
Apple 的 SDK 是如何做到这一点的(我假设我没有错过某种查看方式,比如 UILabel 来源)?