问题标签 [alloc]
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.
objective-c - alloc 和 allocWithZone: 有什么区别?
从论坛讨论来看,最大的区别似乎是性能因素,allocWithZone: 将从特定内存区域分配内存,从而降低交换成本。
在实践中,几乎没有机会使用 allocWithZone: ,任何人都可以举一个简单的例子来说明什么情况下使用 allocWithZone: ?
谢谢,
iphone - 需要帮助了解 iOS/Objective-C 编程中的特定分配/释放习惯用法
我是一名经验丰富的 C/C++ 程序员,开始学习 Objective-C 开发。我目前正在查看 UICatalog 示例,并遇到了另一个我见过几个地方但从未理解过的成语实例。
代码:
AFAIK,这分配并初始化一个 ButtonsViewController,为 ButtonsViewController 创建一个 NSDictionary,并将字典添加到一个名为 menuList 的 NSMutableArray(这是上面代码所在的 MainViewController 的成员变量),然后释放它刚刚创建的 buttonViewController。稍后,MainViewController 在必要时使用字典条目将视图切换到buttonsViewController。
我的问题是:为什么buttonViewController 在这段代码之后仍然有效?它被分配和释放,之间没有“保留”。向 NSDictionary 或 NSMutableArray 添加内容是否具有隐式“保留”?如果是这样,我应该能够以某种方式弄清楚这一点,还是只是你必须阅读和记住的那些事情之一?
objective-c - -dealloc 方法在拥有数组 dealloc'd 时不被调用...应该吗?
这是 Foundation 应用程序中的两段 Objective-C 代码。这段代码在一个函数中:
在我的 TheShape 类中,我有这个dealloc
覆盖方法:
尽管我的程序以其他方式工作,但它并没有按我期望的方式工作。发送消息时[arrayOfObjects release]
,我希望在日志中看到“TheShape dealloc...”字符串。它没有。
Q1:为什么不呢?
所以我挖掘了一下并简化了事情。如果我做这样更简单的事情:
调试消息仍然没有出现在日志中。
Q2:为什么不呢?
但如果我这样做:
调试消息确实出现在日志中。如果我将第一个示例中的 alloc/init 也更改为 ,调试消息也会出现在日志中new
。
Q3:为什么?
显然,我在 alloc/init/release 周期(Q 的 1 和 2)以及假定的new
和alloc/init
(Q3)的等效性中遗漏了一些概念性的东西。任何人都可以向我指出一个教程,它可以像我一样为难以思考的人解释更多的东西吗?
谢谢,
账单
c - C将字符串保存到二维数组
这个想法是从标准输入读取字符串,直到达到 EOF(以这种格式"string - string"
)。然后,将字符串分成两个字符串并将它们保存到二维数组中。该数组是动态分配的,最初有 2 行和 20 列,但我想每次添加下一个字符串时添加 2 行(函数expandmat()
)。这是我的代码:
另外,如果这段代码中有一些没有任何意义的东西,你能告诉我如何解决它吗?
我知道这似乎是一项微不足道的任务,但它一直让我发疯。
谢谢你的帮助。
iphone - 我怎样才能分配和初始化一个对象,所以当 ViewDidLoad 加载时它不应该再次重新加载?
我已经在ViewControllerViewDidLoad
中初始化了一个委托对象,但是当我再次加载它时,它再次初始化了该值。
我在该委托对象中保存了某种数组,我想使用getObject
and访问它setObject
。我应该怎么做才能使委托对象不会在每次ViewDidLoad
调用时都重新初始化?
objective-c - 初始化自定义类的问题(UIImageView 可能不响应“-alloc”)
我对这条线有疑问
问题是带有警告的“未声明的球”:“UIImageView”可能无法响应“-alloc”和警告:未找到“-initWithPNGFileName:andGame:andCGRect:”方法
这是方法:
我不明白为什么无法分配 UIImageView 以及为什么我没有找到 '-initWithPNGFileName:andGame:andCGRect:' 方法
谢谢
objective-c - NSString 分配与否!
我从 scrollViewDidScroll 方法运行这段代码(所以它在你滚动时运行!):
效果很好,但是它会影响滚动的性能(导致它在减速时颤抖)
我的问题是,我是否需要继续使用 alloc 和 release 或者有没有办法在没有它的情况下使用 initWithFormat 获取一些数字?
objective-c - 在这种情况下我必须使用 NSInteger 以及何时使用简单的 int?
可能重复:
何时使用 NSInteger 与 int?
我真的很困惑,什么时候必须使用 NSInteger 以及什么时候使用 int?当我在论坛中查看时,我知道 NSInteger 会进行分配。真的吗?与此相关的任何事情都将是可观的。谢谢
objective-c - 如果 initWithX 失败,alloc 会发生什么?
MyClass* obj = [[MyClass alloc] initWithX:X]
用 Objective-C编写是一种常见的做法。initWithX
通常定义为
我的问题是:如果初始化失败怎么办?我不想抛出异常,但是,如何指示错误?如果我 return nil
,调用者将无法释放指针。
iphone - 我可以返回分配的对象并将其释放到函数之外吗?
嗨,我刚刚用 NSString 写了一个简单的例子。在我的真实程序中,我使用了一个自定义的 UIView 类,而不是 NSString。
allocString 创建一个 NSString 实例,它的保留计数为 1。没有自动释放,它只返回一个实例。
在 viewDidLoad 方法中,变量 name 只是指向 allocString 方法返回的对象,所以实例的保留计数仍然是 1。
因此,[name release] 减少了它的保留计数。
这是正确的吗?还是我必须在 allocString 方法中自动释放它?谢谢!