问题标签 [uikit]

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

iphone - main.m 真的是每个事件创建主运行循环的自动释放池的地方吗?

如果是这种情况,那么 main() 函数必须在每个事件上调用,对吗?但我试过了,“新事件......”日志消息只是在应用程序启动时出现。所以我猜主线程中肯定还有另一个自动释放池。

0 投票
3 回答
2845 浏览

iphone - 我应该 -drain 还是 -release iPhone OS 中的自动释放池?

医生说:

在垃圾收集环境中,如有必要,向池发送一条耗尽消息会触发垃圾收集;但是,发布是无操作的。在引用计数环境中,drain 与 release 具有相同的效果。因此,通常应该使用排水而不是释放。

如果我做对了,他们说我应该总是使用-drain,不管周围有垃圾收集还是引用计数。在 iPhone 上没有 GC,所以无论如何我发送 -drain?

不幸的是,该文档只谈到了 Cocoa,而不是 Cocoa Touch 或 iPhone。所以我不确定这是否同样适用。

0 投票
3 回答
417 浏览

iphone - 是否可以将对象添加到特定的自动释放池?

在文档中有一个 addObject: NSAutoreleasePool 方法。

我想过这个:

NSString *myString = [[NSString alloc] initWithCString:"这行得通吗?"]; [thePool addObject:myString]; [另一个池 addObject:myString];

那可能吗?我总是读到我只能将对象添加到自动释放池堆栈的最顶层。

0 投票
4 回答
3770 浏览

iphone - 为什么自实现的 getter 应该保留并自动释放返回的对象?

例子:

二传手实际上已经保留了它,对吗?实际上没有人应该绕过 Setter ......所以我想知道为什么 getter 不只是返回对象?它实际上已经保留了。或者如果同时另一个对象被传递给setter,是否需要这样做?

0 投票
4 回答
193 浏览

objective-c - 说 Getter 是实例变量的所有者是否有效?或者谁拥有它?

实际上我会说:是的,Getter 是所有者。因此,任何调用 Getter 的人都不负责释放内存。或者更准确地说,对象本身就是拥有者,但Getter充当了将实例变量传递给其他人的机制。这是对的,还是我弄错了?

0 投票
3 回答
1050 浏览

iphone - Apple 在内存管理编程指南中谈论的是哪些“顶级对象”?

Cocoa 的内存管理编程指南中, Apple 谈到了顶级对象。他们说,我需要为他们每个人提供一个奥特莱斯。

但是,如果有任何顶级对象未存储在 outlet 中,则必须保留 loadNibNamed:owner:options: 方法返回的数组或数组中的对象,以防止这些对象过早释放。

那么“顶级对象”到底是什么意思呢?我会说他们谈论根视图和窗口。还有什么?这个提示是否仅适用于我想手动加载笔尖的情况?或者它适用于任何笔尖和任何情况?

0 投票
1 回答
160 浏览

iphone - 为什么不需要发布设置了“assign”的 Outlet?

如果我有这样的东西,我一直在阅读:

那我就不用关心内存管理了。我不必在 -dealloc 方法中执行 [anView release]。

为什么?

“assign”只是告诉编译器:“嘿伙计,这个属性不会保留任何人分配给它的任何东西”。然后你可以做

并且编译器神奇地创建了一个getter和setter,其中setter可能看起来像这样:

Setter 可能看起来像:

正确错误?如果这是正确的,setter 不会声明 newAnView 变量的所有权,因为它不是“保留”属性。它只是接受它并将其分配给实例变量。所以在考虑所有权策略时,不需要释放-dealloc中的anView实例变量。该对象不拥有它。那是正确的吗?

0 投票
5 回答
3528 浏览

iphone - 为什么要写[anView release], anView = nil; 而不是 [anView 发布];?

我在某处读到-关于内存不足警告并放弃所有子视图的不可见视图(我认为=整个笔尖),您应该这样做:

而不是

在我调用 release 之后,将这些指针指向 nil(=“无对象”)的原因是什么?让我猜猜:由于某种原因,其他一些方法可能会保留视图(任何人都可以举例说明何时会发生这种情况?),然后发生 didReceiveMemoryWarning 事情,并且您释放了当前不可见的整个 nib+view(即在多视图应用程序中)。一旦用户想再次查看该视图,您将再次快速加载 nib,然后:它加载所有视图,连接插座,然后 BANG!您的其他保留视图现在挂起,没有任何指针在内存砖的某个地方孤独,导致大量内存泄漏,直到您的应用程序崩溃。

正确错误?

0 投票
2 回答
838 浏览

iphone - “分配”是@property 编译器指令的默认设置吗?

如果我定义一个属性并执行以下操作:

那么我认为这是一个“分配”属性。那是对的吗?

0 投票
4 回答
3563 浏览

objective-c - @property 和 @synthesize 有什么区别?

据我了解,@synthesize 实际上正在生成 Getter 和 Setter。但是@property 然后在做什么呢?它只是为那个很酷的@synthesize 魔术函数设置参数吗?