ivar相关内容

在目标 c 中使用 ivars 与属性的原因

我一直无法找到有关此主题的任何信息,而且我所了解的大部分信息完全是偶然的(并且花了几个小时试图找出我的代码无法正常工作的原因).在学习 Objective-c 时,我发现大多数教程都使用相同的名称创建变量和属性.我不明白其中的意义,因为似乎该属性完成了所有工作,而变量就在那里.例如: Test.h @interface 测试:NSObject {int _timesPlayed, _hig ..
发布时间:2022-01-02 18:10:47 移动开发

Objective-C - iVar 作用域方法变量?

我之前在 Objective-C 中乱搞,遇到了一个很常见的情况: 我有一个类,它不是单例,它需要一个在方法调用之间共享的变量,例如 static,但每个实例都需要它自己的变量.然而,这个变量只需要在一个特定的方法中使用,我们称之为-foo. 我想做的是有一个宏,我们称之为ivar,它可以让我执行以下操作: @implementation MyClass-(foo){ivar int ..
发布时间:2021-12-23 09:33:21 移动开发

为什么要使用 ivar?

我通常看到这个问题以另一种方式被问到,例如必须每个 ivar成为财产?(我喜欢 bbum 对这个问题的回答). 我几乎只在我的代码中使用属性.然而,我经常与一位长期在 iOS 上进行开发并且是传统游戏程序员的承包商合作.他编写的代码几乎不声明任何属性,并且依赖于 ivars.我认为他这样做是因为 1.) 他已经习惯了,因为直到 Objective C 2.0(2007 年 10 月)和 2. ..

综合属性和ivar错误

我一直在以"Debug X86-64"(调试X86-64)模式(Xcode 3.6)构建程序,并且一切正常.但是,我只是尝试切换到“发布X86-64"模式,并且在编译时收到了我的每个属性的以下错误: 综合属性"x"必须与兼容的ivar命名相同,或者必须明确命名一个ivar. 其中"x"是我的属性之一,第一个是"company"(我收到了51个此类错误).在我的.h界面文件中,我以这种方式列出 ..
发布时间:2021-04-22 20:15:55 其他开发

访问实例变量的语法? (目标C)

在Objective-C中访问实例变量的正确语法是什么? 假设我们有这个变量: @interface thisInterface : UIViewController { NSMutableString *aString; } @property (nonatomic, retain) NSMutableString *aString; 它是合成的. 当我们要访问它 ..
发布时间:2021-02-08 20:18:28 移动开发

类别可以访问在其扩展的类中定义的实例变量吗?

我知道尝试将属性放在类别中不是一个好主意。我可以从扩展类的类别中访问类的实例变量吗?还是有必要在正在扩展的类上公开访问器? 例如,假设我有一个名为“ Person”的类,其实现如下所示: #import“ Person.h” @interface Person() { NSMutableArray * _friends; } @end @实现人 -(实例 ..
发布时间:2020-09-30 00:44:44 移动开发

在类扩展中使用属性,而不是在ARC后使用ivar

推荐的做法是在后ARC环境中使用属性,包括通过类扩展的私有属性,而不是ivar(在init和dealloc中除外). 除推荐做法外,使用ivar而不是属性的人的主要缺点是什么?我试图说服某些人进行转换,但有些人则认为ivar可以同样好且更快地工作.因此,我想收集好的可靠论据,而不是给出诸如“更好,更一致等"之类的软性陈述. 解决方案 对您的问题没有正确的答案,只有观点.因此,您会得到 ..
发布时间:2020-09-15 00:01:27 移动开发

在目标c中公开/合成iVar属性

我有一个类,该类实际上是另一个类的轻量级包装类.它把其他类称为iVar.我希望能够公开iVar的某些属性(实际上很多),但是要做到这一点,我必须像这样写出每个属性访问器: - (void) setProperty:(Class *)value{ _iVar.property = value; } - (Class *) property{ return _iVar.prop ..
发布时间:2020-05-19 02:04:35 移动开发

想要在__weak ivar被破坏时执行操作

我有一个@class Foo,其中包含一个__weak id bar ivar.来自不同类的方法的几种操作可能导致对象消失,从而被bar破坏. 当ARC自动禁用ivar时,我想执行一个操作. 如果可能,我要避免将bar转换为属性或使用键值观察. 这甚至有可能吗?如果不是,可以将KVO用作非财产的垃圾吗? 解决方案 KVO无法成功用于非财产IVAR. 当Objecti ..
发布时间:2020-05-19 02:00:11 移动开发

为什么类别不能有实例变量?

我了解我们可以使用关联引用来在类别中调用类似ivar的行为.但是,无法在类别中声明新的ivars的具体原因是什么? 是因为我们会入侵班级的私人空间吗?还是还有其他原因?如果是的话,我将不胜感激一个示例,该示例显示了可以在打破任何中断的类别中声明ivars的功能. 解决方案 将Objective-C的错误视为简单的旧C结构.实例化一个类的实例时,将创建一个足以容纳该结构的内存块. ..
发布时间:2020-05-19 00:49:14 移动开发

将ivars放入init

我有两个视图控制器:BSViewController包含源ivars number和array,以及BSotherViewController作为目标需要接收ivars. 此问题提供了一种产生期望结果的方法.建议是计算如下所示,init中的self.number和self.array的值将覆盖指定的init. - (id)init { if (self = [super init] ..
发布时间:2020-05-19 00:42:13 移动开发

ARC时代的财产与ivar

据我了解,设置ivar现在会保留分配给它的对象,因为设置变量默认为strong限定符.因为ivars在它们声明的对象的范围内,并且strong将对象保留在变量的范围内,所以这意味着在包含ivar的对象仍然存在的情况下,永远不会释放ivars值. 这正确吗? 如果是这样,我是否认为内存管理在保留(强)属性和简单的ivar之间没有区别? 解决方案 如果是变量: 使用 ARC ..
发布时间:2020-05-19 00:11:57 移动开发

在目标c中使用ivars vs属性的原因

我一直无法找到有关此主题的任何信息,而我所知道的大部分信息都是完全出于偶然(以及数小时的尝试来弄清楚为什么我的代码不起作用的原因).在学习Objective-C时,我发现大多数教程都使用相同的名称制作变量和属性.我不理解其重要性,因为似乎该属性完成了所有工作,而该变量只是位于那里.例如: Test.h @interface Test : NSObject { int _time ..
发布时间:2020-05-19 00:05:11 移动开发

Objective-C-iVar范围方法变量?

早些时候我在Objective-C里很乱,我遇到了一种很常见的情况: 我有一个不是单例的类,它需要在方法调用之间共享一个变量,例如static,但是每个实例都需要它自己的变量.但是,此变量仅需要在一种特定方法中使用,我们将其称为-foo. 我想做的是有一个宏,我们称它为ivar,它可以让我执行以下操作: @implementation MyClass -(foo) { ..
发布时间:2020-05-09 18:38:39 移动开发

实例变量声明的顺序在Objective-C中是否重要?

我在互联网上搜索优化Objective-C代码的提示,并遇到了 解决方案 本文已过时.曾经有一次,将Ivars存储在Objective-C实例中,就像存储结构的成员一样,因此内存对齐可能(略有影响)访问时间. 但是,现在可以间接访问至少在Apple的运行时中);实例现在保存了ivar的 offset ,并使用它来访问变量.由于所有这些偏移量都是相同的类型,并且您无法控制其他存储,因此可以避 ..
发布时间:2020-05-08 20:28:09 移动开发