问题标签 [ivars]

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 回答
152 浏览

ios - 在 ARC 上创建 IBOutlets 作为 ivars。内存问题?

我知道 Objective-C 开发的最佳实践表明 IBOutlets 应始终根据 Apple 定义为属性。

从实际的角度来看,在 iOS 和 OS X 中的 outlet 应该被定义为声明的属性。出口通常应该是弱的,除了从文件所有者到 nib 文件中的顶级对象(或者,在 iOS 中,故事板场景)应该是强的。

但出于学习目的,假设我们使用 ARC 得到了以下场景:

如果我没记错的话,这三个按钮很强大,所以我的问题是:一旦释放 ViewController,这些按钮会从内存中释放吗?

如果它们很弱,这些按钮会自动释放,我知道,但不确定它们是否强大。

有人可以帮忙吗?为了清楚起见,DetailViewController 上的方法 'dealloc' 是空的。

0 投票
1 回答
44 浏览

objective-c - 在 readonly 属性之后进一步澄清 _property?

在 interface 部分设置 readonly 属性时,这会“禁用”该属性的 setter 方法。我需要澄清一下:

  1. 如果我们可以使用 _propertyName 设置只读属性,那么它的意义何在?
  2. 如果我们的属性是可读写的,何时使用 _propertyName?

  3. 此外,我了解我们使用 setter 方法进行一定程度的抽象,而不仅仅是使用 _propertyName 分配值。还有其他不使用 _propertyName 的理由吗?

下面是一些示例代码。谢谢你。

接口部分

实施部分

0 投票
1 回答
293 浏览

ios - 是否建议为只读合成属性定义 ivars?

我发现很多时候我想要一个综合的只读属性,我只是根据其他变量来实现该属性的 getter 方法,而不需要 ivar,例如(注意:我正在定义界面中的 ivars,因为我使用的是 OmniGraffle UML 软件,它无法识别由合成属性自动生成的 ivars):

在上面的Editor类中,我是否需要_options在头定义中定义 ivar,重要的是自动生成的 ivar 是否占用符号表中的内存或空间?copy此外,在这种情况下使用,retain或 no value会更有效吗?只是好奇。

0 投票
2 回答
41 浏览

objective-c - 使用 ivars 在类中定义属性值

访问ivar链接到类方法内部属性的私有属性是否比使用其合成的 getter/setter 方法更有效,还是效率相同?...如:

我猜后者需要更多时间来执行,但我想知道他们建议应用程序开发人员使用什么来保持一致性和良好的编程技术,以及两个分配是否基本上具有相同的时间复杂度。

0 投票
1 回答
47 浏览

objective-c - 使用 . 符号

假设我有以下课程。

如果我想为年龄变量赋值,我可以使用类方法在 main.js 中执行以下操作。

然而,从乱搞中我注意到我似乎能够使用 . 符号。我没有收到任何警告或错误。

两者的最终结果似乎相同,但我觉得我不应该使用 . 像这样直接访问 ivars 的符号。

我应该对所有 ivars 使用 getter 和 setter 还是像这样直接访问它们好吗?

谢谢

0 投票
3 回答
41 浏览

ios - 使用分配是否会减少使用的内存量?

当我assign在声明合成属性时使用时,ARC 是否仍会自动为其创建匹配的 ivar?我的财产如下

_text我对自动生成的ivar没有任何用处;当我省略@synthesize text = _text或未使用的 ivar 仅保留在未使用的内存中时,编译器是否仍会创建此 ivar?

0 投票
0 回答
100 浏览

objective-c - 子类没有父母公共财产的ivar

我正在学习objective-c,但有些东西我找不到答案。

我在类的公共接口中声明了一个属性。在该类中,我可以使用下划线直接访问 ivar,而无需综合属性。

例如:
// Class.h @property (nonatomic, strong) NSString *someString; // Class.m _someString = something;

但是,如果我对该类进行子类化,则无需任何额外代码即可访问 setter 和 getter,但无法直接访问 ivar,除非我显式合成属性,这在超类中不是必需的步骤。

我知道它确实为子类创建了特定的 ivars,因为我有同一个超类的 2 个子类,每个子类都有自己的超类属性值。如果我想直接访问 ivars,我只是不明白为什么需要显式合成子类。

这不是一个真正的问题,而是更多的好奇心。

0 投票
1 回答
66 浏览

objective-c - 如何在方法中向 Ivar 发送值

Objective-C 的新手并保持它非常简单我希望一次理解一件事......我设置了一个非常简单的类,名为 student,它所做的只是添加两个数字,试图查看事物如何传入和传回来自方法)**我重写了代码==>>查看最后以查看有效的版本**

如果我有一个方法

firstNum我有一个名为 student 的类的实例,我为like赋值student.firstNum = 100; student.secondNum = 77;很容易,该方法将它们相加并将总和发送到return

但主要是我尝试从一个数组中分配它但它没有工作我试过

它说指向整数转换的指针不兼容

这是我尝试过的 main 的片段,它不完整,它只是试图firstNum最终设置开始secondNummyIntegers[i]

我也试过了[i]

这是我的方法:

这是有效的:假设我有一个学生对象

.m

  • (long)addNumbers:(NSNumber *)x :(NSNumber *)y {

    长款;

    sum = [x integerValue] + [y integerValue]; 返回总和;}

主要的

NSMutableArray *myIntegers1 = [NSMutableArray 数组]; NSMutableArray *myIntegers2 = [NSMutableArray 数组];

长总和 = [学生 addNumbers:[myIntegers1 objectAtIndex:i] :[myIntegers2 objectAtIndex:i]];

0 投票
1 回答
34 浏览

ios - 为什么将 ivars 用于 IBOutlets 而不是属性?

我刚开始做一个新项目。它有很多遗留代码,我发现了以下代码

我有几个疑问:

  • 将私有 ivars 用于 IBOutlet 有什么好处?
  • 为什么要添加 __weak?据我了解,在 ARC 环境中,ivars 总是很弱。

谢谢

0 投票
1 回答
51 浏览

ios - Objective-C 中的 iVar LifeTime 与属性 LifeTime

@try { if([Getprices count]>0) {

所以我在我的邮件中收到了以下信息

堆栈跟踪:-[__NSCFString count]:无法识别的选择器发送到实例 0x157153180

stackoverflow.com/questions/5152651/… 从这个接受的答案我认为数组在某个时候被释放。

现在我的疑问是,我的阵列是否有可能被释放......(假设我的应用程序在后台很长时间,我的阵列是否会被释放)。

那次崩溃的可能原因是什么?谢谢你..