小编iSw*_*ift的帖子

CoreData获取请求转换[Any]到[AnyObject]会产生内存泄漏

我正面临内存泄漏,无法理解PFB

在此输入图像描述

通话追踪:

  1. + 0x196 callq"DYLD-STUB $$ NSManagedObjectContext.fetch(NSFetchRequest)抛出 - > [A]"
  2. + 0x8c callq"_arrayForceCast([A]) - > [B]"
  3. + 0xde callq"Collection.map((A.Iterator.Element)throws - > A1)throws - > [A1]"
  4. + 0x19e callq"ContiguousArray.reserveCapacity(Int) - >()"
  5. + 0xaa callq"_ContiguousArrayBuffer.init(uninitializedCount:Int,minimumCapacity:Int) - > _ContiguousArrayBuffer"
  6. + 0x42 callq"ManagedBufferPointer.init(_uncheckedBufferClass:AnyObject.Type,minimumCapacity:Int) - > ManagedBufferPointer"
  7. + 0x0f callq"swift_slowAlloc"
  8. + 0x04 callq"DYLD-STUB $$ malloc"
  9. + 0x13 callq"malloc_zone_malloc"
  10. + 0x8f movzbl 71543(%rip),%eax

在此输入图像描述

在此输入图像描述

编辑:

我进一步调查了代码,我发现真正的泄漏是当我尝试在coredata获取请求中强制转换类型[Any]到[AnyObject]

func fetchEntity<T: NSManagedObject>(entityClass:T.Type,setPredicate:NSPredicate?) -> [AnyObject]
{
    let entityName = NSStringFromClass(entityClass)
    let fetchRequest:NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: entityName)
    fetchRequest.predicate = setPredicate
    fetchRequest.returnsObjectsAsFaults = false …
Run Code Online (Sandbox Code Playgroud)

memory-leaks core-data ios swift swift3

10
推荐指数
1
解决办法
305
查看次数

什么是 malloc:使用精简模式记录 malloc(但不是 VM 分配)堆栈

您好 xcode 调试中的以下消息是什么。
SomeApp(2389,0x1092763c0) malloc:使用精简模式记录 malloc(但不是 VM 分配)堆栈

代码 8.3

xcode ios swift xcode8

4
推荐指数
1
解决办法
2389
查看次数

在 Tableview 中使用 BezierPath 创建时间轴视图

我试图在 TableView 中绘制一个具有 5 行的里程碑,我在单元格中添加了一个标签为“O”,这里的行高是 44,我试图连接这些点像这样的东西 O------O-- ----O------O-----O 垂直,但我无法弄清楚这里缺少什么,请参考以下代码

 class StopslistTableViewCell:UITableViewCell{

@IBOutlet weak var milestoneLbl: UILabel!

override func draw(_ rect: CGRect) {

    let scrrenX = UIScreen.main.bounds.width - 30

    let frametosuperview = milestoneLbl.convert(milestoneLbl!.frame, to: self.superview)

    print("dotframetosuperview",frametosuperview)

    //print(CGPoint(x: scrrenX, y: previousposY + rect.size.height))

    //frametosuperview.origin.y > 40 ? frametosuperview.origin.y - 20 : frametosuperview.origin.y

    let path = UIBezierPath()
    path.move(to: CGPoint(x: scrrenX, y:frametosuperview.origin.y < 30 ? frametosuperview.origin.y : frametosuperview.origin.y - frametosuperview.height))

    print("move to point--->",frametosuperview.origin.y < 30 ? frametosuperview.origin.y : frametosuperview.origin.y - frametosuperview.height)

    path.addLine(to: CGPoint(x: scrrenX, …
Run Code Online (Sandbox Code Playgroud)

ios swift swift3 xcode8

1
推荐指数
1
解决办法
2879
查看次数

标签 统计

ios ×3

swift ×3

swift3 ×2

xcode8 ×2

core-data ×1

memory-leaks ×1

xcode ×1