问题标签 [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 投票
5 回答
2371 浏览

objective-c - 重写 init 方法为实例变量对象分配内存

我试图重写init一个类的方法,以便初始化对象也初始化 ivar 对象:

1)这个代码甚至可以工作,即便如此,这个解决方案是否不鼓励?
2)为什么if条件不是==?是任务吗?如果是这样,为什么if

对不起,如果这很明显!>_<

0 投票
3 回答
696 浏览

objective-c - 想要在 __weak ivar 被取消时执行操作

我有一个@class Foo包含__weak id barivar。来自不同类中的方法的几个操作可能导致对象消失并因此被bar取消。

我想在 ARC 自动取消 ivar 时执行一个操作。

如果可能的话,我想避免bar变成属性或使用键值观察。

这甚至可能吗?如果不是,KVO 可以用于对抗非财产 ivars 吗?

0 投票
0 回答
122 浏览

android - 为什么通过操作栏按钮重新加载片段时我的 ivar 变为空

我有一个带有 3 个标签的应用程序。每个选项卡的片段都是使用 SectionsViewPager 创建的。我Reloadable用 1 方法创建了一个接口void reload(Context ctx);。在 actionBar 上,我添加了一个重新加载按钮。当按下按钮时,我正在检查片段是否实现Reloadable,如果实现,我调用reload(this);.

到目前为止,一切都很好...

在应用程序中,我之前包含了一个下拉刷新功能,但是因为这感觉不是很“Androidy”,所以我想用上述功能替换它(actionBar 中的重新加载按钮,按下时刷新片段)。顺便说一句,下拉刷新功能运行良好。我已将重新加载功能从Reloadable界面重新映射到新功能。

现在我正在测试我的重新加载按钮并且应用程序崩溃了。

该应用程序崩溃,因为在使用重新加载按钮时,我的一个 TextViews 显然没有绑定到我的 ivar。不过,当我使用 pull-to-refresh 时它是绑定的。以下是相关代码:

当通过actionBar 上null的重新加载按钮调用 mTextView 时。使用片段中的 pullToRefresh 功能时,它不为空。这里出了什么问题?

0 投票
3 回答
241 浏览

objective-c - 如何将 ivar 传递给函数并设置它而不丢失对原始对象的引用

我将 ivar (NSMutableArray) 传递给某个方法。我期待如果我在函数内部修改对象,它会反映在函数外部,但是在这种情况下我需要设置对象;类似于以下内容:

但是我注意到,当我设置它时,函数内部imAnIvar的内存引用会发生变化,并且鉴于此,实际的 ivar 不会改变。我知道问题在于我正在更改方法内对象的引用,因此它停止指向 ivar,然后指向其他一些随机内存方向。

我想到了一个解决这个问题的方法,它可以是在调用函数之前确保 ivar 不是 nil 并执行以下操作:

所以我使用原始对象而不是直接设置它。问题是,为了使它工作,我需要确保 ivar 不是 nil,我认为它不干净,因为我需要在每次调用该方法时执行类似的操作:

所以我的问题是:有没有办法强制局部范围变量指向原始变量,即使我正在设置它?如果没有,有没有更清洁的方法来完成这项工作?

0 投票
2 回答
1210 浏览

objective-c - 为什么需要声明 ivar 和 property 同名?

在 Xcode 4.4 之前的大多数项目中,我意识到开发人员同时声明了一个 ivar 和一个具有相同名称的属性。例子

所以我不知道为什么?

0 投票
2 回答
611 浏览

objective-c - 在 ARC 下,使用运行时方法分配给对象类型 ivar 是否合法/安全?

基于此处描述的技术,我使用 ivar_getOffset() 方法在对象实例中设置 ivars。

现在我遇到了 ivar 是 NSString* 的情况:

更新:

我走错了路(在这种情况下不能使用 ivar_getOffset),我应该使用:

将对象值分配给 ivars。

我的问题仍然存在:在 ARC 下这样做安全吗?ARC 会正确释放 ivar 的现有对象吗?

我担心 ARC 可能无法正确释放 ivar 在分配之前设置的任何字符串。虽然我对此表示怀疑,否则编译器不会让我喜欢 object_setInstanceVariable(“在自动引用计数模式下不可用”)的情况 - 对吧?

0 投票
0 回答
195 浏览

iphone - MobileSubstrate:如何使对象全局可访问

我目前正在使用substrate.h 开发MobileSubstrate 扩展,我需要一个可以从每个捆绑包中访问的对象。

据我所知(并且我尝试过),如果我只是static在代码中放置一个变量,这只会使对象在当前注入的包(例如 SpringBoard 或任何应用程序)中可访问。

所以我想知道能够从每个应用程序(包)访问同一个对象的最佳方法是什么?

我有在类中添加实例变量的想法SpringBoard,但显然我无法调用class_addIvar()现有类。

任何帮助是极大的赞赏。

0 投票
1 回答
348 浏览

objective-c - ivar 布局字符串格式

一个类的 ivar 布局被定义为一个class_ro_tstructuint8_t数组字段(看看http://opensource.apple.com/source/objc4/objc4-532.2/runtime/objc-runtime-new.h)。那么,如何解读呢?存储在其中的数据的格式是什么?

0 投票
2 回答
73 浏览

objective-c - 在其他班级接受 ivar

我有两个视图控制器:BSViewController其中包含源 ivarsnumberarray,以及 BSotherViewController作为目标需要接收 ivars 。(BSViewController上面有一个按钮,用于连接BSotherViewController。)

如何访问两个 ivars 中的值BSotherViewController

BSViewController.h

BSViewController.m

BSotherViewController.h

BSotherViewController.m

下面的问题aview.number是0,不是25;并且aview.array为空。

0 投票
1 回答
250 浏览

objective-c - 将 ivars 放入 init

我有两个视图控制器:BSViewController其中包含源 ivarsnumberarray,以及BSotherViewController作为目标需要接收 ivars 。这个问题提供了一种产生所需结果的方法。建议是计算 和 的值,并self.number覆盖指定的值,如此处所示。self.arrayinitinit

但我不知道这个解决方案如何使原始方法( )的计算成为self.number可能;使用我尝试过的任何方法,我只能为它们的两个值获取 0 和 null 。self.arrayviewDidLoadviewDidLoad

此外,以下行会产生一个警告问题,view即未使用的变量。

所以我正在寻找一种方法,它首先计算我的 ivars numberarray然后执行,init(WithNumber)以便可以在目标类中使用相同的变量BSotherViewController

我认为更直接的方法是不使用init,而是使用类似以下的方法initWithNumber,但我似乎无法满足使用下划线的所有 ARC 要求,以及我对objective-c 的有限理解。

为了完整起见,我将在下面重现上一个问题的答案中生成的大部分代码。

BSViewController.h

BSViewController.m

BSotherViewController.h

BSotherViewController.m