相关疑难解决方法(0)

swift中`let`和`var`有什么区别?

是什么区别let,并var在苹果的雨燕语言?

根据我的理解,它是一种编译语言,但它不会在编译时检查类型.这让我感到困惑.编译器如何知道类型错误?如果编译器没有检查类型,那么生产环境是不是有问题?

swift

302
推荐指数
8
解决办法
16万
查看次数

收到EXC_BAD_ACCESS信号

将应用程序部署到设备时,程序将在几个周期后退出并出现以下错误:

Program received signal: "EXC_BAD_ACCESS".
Run Code Online (Sandbox Code Playgroud)

该程序在iPhone模拟器上运行没有任何问题,只要我逐步执行一个指令,它也将调试和运行.一旦我让它再次运行,我就会EXC_BAD_ACCESS发出信号.

在这种特殊情况下,它恰好是加速度计代码中的错误.它不会在模拟器中执行,这就是它没有抛出任何错误的原因.但是,它会在部署到设备后执行.

这个问题的大部分答案都是针对一般EXC_BAD_ACCESS错误的,所以我会把这个问题保留为可怕的Bad Access错误.

EXC_BAD_ACCESS通常由于非法内存访问而被抛出.您可以在下面的答案中找到更多信息.

EXC_BAD_ACCESS以前遇到过这个信号吗,你是怎么处理它的?

cocoa-touch ios

284
推荐指数
10
解决办法
25万
查看次数

快速语言中的结构与类

来自Apple的书"结构和类之间最重要的区别之一是结构在代码中传递时总是被复制,但类是通过引用传递的."

任何人都可以让我理解这意味着什么,对我来说,类和结构似乎是一样的.

swift

184
推荐指数
6
解决办法
7万
查看次数

Java垃圾收集如何与循环引用一起使用?

根据我的理解,如果没有其他东西"指向"该对象,Java中的垃圾收集会清除一些对象.

我的问题是,如果我们有这样的事情会发生什么:

class Node {
    public object value;
    public Node next;
    public Node(object o, Node n) { value = 0; next = n;}
}

//...some code
{
    Node a = new Node("a", null), 
         b = new Node("b", a), 
         c = new Node("c", b);
    a.next = c;
} //end of scope
//...other code
Run Code Online (Sandbox Code Playgroud)

a,bc应该是垃圾收集,但它们都被其他对象引用.

Java垃圾收集如何处理这个问题?(或者它只是一个内存消耗?)

java garbage-collection

148
推荐指数
6
解决办法
5万
查看次数

如何正确处理带参数的Swift块中的弱自我

在我TextViewTableViewCell,我有一个变量来跟踪块和一个配置方法,其中传入和分配块.
这是我的TextViewTableViewCell班级:

//
//  TextViewTableViewCell.swift
//

import UIKit

class TextViewTableViewCell: UITableViewCell, UITextViewDelegate {

    @IBOutlet var textView : UITextView

    var onTextViewEditClosure : ((text : String) -> Void)?

    func configure(#text: String?, onTextEdit : ((text : String) -> Void)) {
        onTextViewEditClosure = onTextEdit
        textView.delegate = self
        textView.text = text
    }

    // #pragma mark - Text View Delegate

    func textViewDidEndEditing(textView: UITextView!) {
        if onTextViewEditClosure {
            onTextViewEditClosure!(text: textView.text)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在我的cellForRowAtIndexPath方法中使用configure方法时,如何在我传入的块中正确使用弱自我.
这是我没有弱自我的情况:

let myCell = tableView.dequeueReusableCellWithIdentifier(textViewCellIdenfitier) as TextViewTableViewCell …
Run Code Online (Sandbox Code Playgroud)

ios retain-cycle swift

143
推荐指数
7
解决办法
11万
查看次数

Objective-C属性的默认属性是什么?

当您没有在目标C中列出任何内容时,适当的默认属性是什么?

例如,如果我写这个:

@property float value;
Run Code Online (Sandbox Code Playgroud)

默认值是什么,比如它是只读的,是否会保留......等等?

cocoa-touch objective-c

42
推荐指数
2
解决办法
2万
查看次数

KVO vs NSNotification vs protocol/delegates?

虽然我有一些想法可以使用,但确切的用法仍然不清楚.有人能解释一下......?谢谢.

iphone protocols key-value-observing nsnotifications ios

34
推荐指数
2
解决办法
2万
查看次数

Swift堆栈/堆理解

我想在swift中不希望存储在堆栈/堆中的内容.我有一个很好的估计:你打印的所有东西和内存地址都不是值,它们存储在堆栈中,而是打印出的值是什么,它们在堆上,基本上根据值和引用类型.我完全错了吗?并且可选地,您是否可以提供堆栈/堆的可视化表示?

memory heap stack ios swift

33
推荐指数
4
解决办法
2万
查看次数

如何在 Swift 中演示僵尸对象?

我已阅读如何在 Xcode Instruments 中演示内存泄漏和僵尸对象?但这是针对 Objective-c 的。这些步骤不适用。

通过阅读这里,我了解到僵尸是以下物体:

  • 解除分配
  • 但某些指针仍在尝试指向它们并向它们发送消息。

不太确定这与访问已释放的对象有何不同。

我的意思是在 Swift 中你可以这样做:

var person : Person? = Person(name: "John")
person = nil
print(person!.name)
Run Code Online (Sandbox Code Playgroud)

人员被解除分配了吗?是的!

我们是否试图指出这一点?是的!

那么有人可以分享导致创建悬空指针的最常见错误吗?

memory-management nszombie dangling-pointer swift

6
推荐指数
3
解决办法
4430
查看次数