问题标签 [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 - 为什么在 Objective-C 中分别调用 alloc 和 init?
注意:我对 Objective-C 比较陌生,并且来自 Java 和 PHP。
有人可以向我解释为什么我总是必须先分配然后初始化一个实例吗?
这不能在这样的 init 方法中完成:
这只是旧 C 时代的遗留物,还是我没有看到的东西?
我知道这不是问题,因为我也可以总是调用 alloc 和 init,但是由于这有点乏味,我至少想知道我为什么要这样做。
到目前为止,我很喜欢这种语言的表现力,但这是我想完全理解的东西,以便以 Objective-C 的方式思考。
谢谢!
iphone - iPhone app中的内存分配、释放和NSURLConnection
我希望有人可以帮助我解决这个问题。我正在努力寻找应该是一个简单问题的答案。顺便说一句,这是我使用 c 和 c# 多年后的第一个主要 obj-c 项目,所以请随时指出我失败的地方。
我有一个 iPhone 应用程序,旨在将相册加载到 UIScrollView 中。它还具有随机图像功能,该功能使用相同的过程,但仅显示单个图像。它是这样工作的:
- 读取外部 XML 提要(存储在 ruby-on-rails 网站上),其中包含解析后照片的随机 url 的路径。
- 使用 NSURLConnection 将 URL 的内容下载到 NSData。
- 创建并推送 ScrollView
- 子类 UIView 分配一个 UIImageView,分配一个带有 NSData 的 UIImage,用 UIimage 初始化 UIImageView,最后将 imageview 添加到 UIView。
- 然后,父视图将 UIView 添加到 UIScrollView,然后将其推到前面。
当需要下一个随机图像时,此过程再次发生。除了向 UIScrollView 添加了几个 UIView 之外,它在显示整个图像专辑时也使用相同的过程。
问题是,尽管在适当的情况下使用了 release 和 delloc,但活动工具指示 NSURLConnection 和 UIImage 使用的内存在请求下一个图像时没有从内存中释放。将应用程序构建到 iPhone 上进一步证明了这一点。连续请求多个图像会导致应用程序崩溃,这可能是由于内存消耗造成的。
以下是一些代码,因为由于合同协议,我无法发布整个项目。
URLDownload 类(使用 DataDownload)
数据下载类
ImageView 子类
如何显示图像的示例代码
下图显示了所有分配,以说明正在发生的事情。1 显示启动时分配,2 显示加载第一个图像后,3 显示第二个图像后。
http://www.gretanova.com/misc/iphone/1.png & 2.png & 3.png
谢谢大家,李
objective-c - 我分配/释放什么对象
在Objective-C中,简单地说 - 我假设时是否正确
- 所有指针变量在不再使用时都必须释放?
- 每个指针变量(*)都是某种类,或者不是?
- 因此,每个指针变量都需要使用“alloc”和“init”(或类似的)进行分配和初始化吗?
- 使用 Object 方法声明变量时,我可能不需要“alloc”或“init”?
- 数字声明(BOOL、int、float 等)只要不声明为指针就不需要内存管理?
感谢您提供任何有助于解决我的困惑的建议 iFloh
c - c中的模板样式矩阵实现
我不时使用以下代码生成矩阵样式数据结构
然后,如果我的矩阵中的条目需要不同类型的类型,我会相应地更改我的 typedef。
现在我需要 2 个不同类型的矩阵,一个简单的解决方案是复制/粘贴代码,但是有什么方法可以做一个更通用的实现。
谢谢
编辑:我应该澄清它在 c 中而不是 c++ 中。很抱歉没有说清楚。
c - 如何调试异常的 C 内存/堆栈问题
抱歉,我无法具体说明代码,但我看到的问题是异常的。字符串值似乎会根据其他不相关的代码而改变。例如,下面传递的参数的值将仅根据我是否注释掉一两个 fprintf() 调用而改变!到最后一个 fprintf() 值通常是完全空的(不,我已经检查以确保我没有直接修改参数......我所要做的就是注释掉 fprintf() 或添加另一个 fprintf()并且字符串的值会在某些点发生变化!):
周围有更多的代码,所以我不能要求有人调试我的程序——我想知道的是如何调试为什么像这样的字符串会根据不相关的代码改变或覆盖它们的内存。我的记忆力有限吗?我的堆栈太小了?我该怎么说?我还能做些什么来追踪问题?我的程序并不庞大,它就像一千行代码给或取和几个动态链接的外部库,但没有什么不寻常的。
帮助!蒂亚!
memory - 在 iPad 上跟踪 EXC_BAD_ACCESS
我一直在使用这段代码来创建我的 UIWindow
UIMyWindow 没有什么特别之处,它只是有一个指向 C++ 类的指针,该类对 ObjectiveC 进行了一些包装。
最近我的应用程序在添加了一些不需要对错误做任何事情的代码行后开始崩溃。我添加的代码行只是分配了一个 C++ 对象,但程序执行从未到达这一行。
有趣的是,我的代码在 Release 中工作。
我唯一的猜测是我在一个完全不同的地方造成了一些内存损坏。我的问题是:可能是什么类型的内存损坏?是否有一些好的做法来追踪它们?
objective-c - obj -c NSString 和 alloc/retain/release
这可能是一个更多关于对象分配/保留/释放的问题,但我将使用 NSString 作为示例。我知道我可以做到:
本质上分配和初始化我的变量 myString 引用的字符串,稍后我应该调用 [myString release] 。但是,如果在我这样做之后,我将其设置为其他一些字符串,例如:
这是否本质上会造成内存泄漏,因为我已将指针重新分配给另一个对象并丢失了对我分配的原始对象的所有引用?
如果我只是想亲自分配和释放一个字符串,然后在不同时间更改它的值,我应该使用除 '=' 之外的其他语法还是重载以正确更改最初由 myString 表示的对象的内容当我使用 =.
iphone - iPhone内存分配问题
在我的应用程序中,我有 20 个左右的 ViewControllers 和 Xibs 用户应该能够访问。问题是在查看了其中的 5 个左右后,应用程序由于内存不足而崩溃。我已经释放了我在 ViewControllers 中分配的所有内存,所以我只能假设这是因为它拥有这么多 IBOutlets 的内存。
下面是我用来插入视图的代码,顶部还有我如何删除它们:
任何帮助将不胜感激
iphone - iPhone图像问题
由于内存过多,我的应用程序中的 iOS 4.0 经常崩溃。Instruments 告诉我它的类别是“Malloc 600KB”,负责的库是 ImageIO,负责的调用者是 ImageIO_Malloc。我在这个应用程序中使用了很多图像,但并不比我在其他应用程序中使用的更多。这很奇怪,因为如果我在 3.0 上运行相同的代码,那么我就没有真正的问题,而在 4.0 上,即使我没有碰过它并且它没有加载任何新图像,它有时也会从 5MB 跳到 30MB 内存(就我的知识去)。
有没有人有任何想法或知道我如何找到问题的根源?
提前致谢!
objective-c - 调用从 nib 发起的单例对象
我有一个在我的 nib 文件中启动的对象。我希望它是一个单例,但也可以通过[myClass sharedInstance];
. 现在我有这个:
但alloc
永远不会被调用。