小编Dán*_*agy的帖子

Swift 1.2中的@noescape属性

Swift 1.2中有一个新属性,函数中有闭包参数,文档说:

这表示该参数仅被调用(或在调用中作为@noescape参数传递),这意味着它不能超过调用的生命周期.

在我的理解中,在此之前,我们可以使用[weak self]不让闭包有一个强引用,例如它的类,并且self可以是nil或闭包执行时的实例,但现在,@noescape意味着闭包永远不会被执行如果该课程被去除了资格.我理解正确吗?

如果我是正确的,为什么我会使用@noescape一个常规函数的闭包,当它们的行为非常相似时?

attributes closures swift

75
推荐指数
3
解决办法
1万
查看次数

Swift堆栈/堆理解

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

memory heap stack ios swift

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

如何从C中的char数组中释放内存

我创建了一个像这样的char数组:

char arr[3] = "bo";
Run Code Online (Sandbox Code Playgroud)

如何释放与名为"arr"的数组相关联的内存?

c

23
推荐指数
3
解决办法
10万
查看次数

String和StaticString之间的区别

我正在浏览文档,我找到了StaticString.它指出:

一个简单的字符串,用于表示"在编译时可以识别"的文本.

我原本以为它String具有与NSString编译时相同的行为,但看起来我错了.所以我的问题是我们何时应该使用StaticString而不是a String,唯一的区别是StaticString编译时是否已知?

我找到的一件事是

var a: String = "asdf" //"asdf"
var b: StaticString = "adsf" //{(Opaque Value), (Opaque Value), (Opaque Value)}

sizeofValue(a)  //24
sizeofValue(b)  //17
Run Code Online (Sandbox Code Playgroud)

所以看起来StaticString内存占用少了一点.

string swift

20
推荐指数
2
解决办法
5867
查看次数

找不到类,而是使用默认的NSManagedObject

IOS 8中的核心数据存在问题.每当我想使用该insertNewObjectForEntityForName方法时,我都会得到

找不到类,而是使用默认的NSManagedObject.

错误信息.我使用objective-c,我没有使用IOS 7这个问题.也可能有任何问题,因为在我的工作区有两个项目,一个包含核心数据相关的代码,另一个包含UI.

core-data objective-c ios ios8

13
推荐指数
5
解决办法
1万
查看次数

Pydantic:根据其他字段的值使验证器中的字段为 None

我将 pydanticBaseModel与这样的验证器一起使用:

from datetime import date
from typing import List, Optional
from pydantic import BaseModel, BaseConfig, validator

class Model(BaseModel):
    class Config(BaseConfig):
        allow_population_by_alias = True
        fields = {
            "some_date": {
                "alias": "some_list"
            }
        }
    some_date: Optional[date]
    some_list: List[date]

    @validator("some_date", pre=True, always=True)
    def validate_date(cls, value):
        if len(value) < 2: # here value is some_list
            return None
        return value[0] # return the first value - let's assume it's a date string

# This reproduces the problem
m = Model(some_list=['2019-01-03'])
Run Code Online (Sandbox Code Playgroud)

我想some_date …

python pydantic

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

元素添加/删除到阵列时收到通知

我希望在从数组中添加/删除元素时收到通知.如果我们不讨论数组,例如在更改字符串时收到通知,那么在swift中有一个很好的解决方案:

private var privateWord: String?
var word: String? {
    get {
        return privateWord
    }
    set {
        if newValue != "" {
            notifyThatWordIsChanged()
        } else {
            notifyThatWordIsEmpty()
        }
        privateWord = newValue
    }
}
Run Code Online (Sandbox Code Playgroud)

当我向数组添加/删除元素时,我们能否获得类似的结果?

arrays ios swift

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

使用协议以typealias作为属性

我有一个带有类型别名的协议:

protocol Archivable {
    typealias DataType

    func save(data: DataType, withNewName newName: String) throws
    func load(fromFileName fileName: String) throws -> DataType
}
Run Code Online (Sandbox Code Playgroud)

以及符合该协议的类:

class Archiver: Archivable {
    typealias DataType = Int

    func save(data: DataType, withNewName newName: String) throws {
        //saving
    }

    func load(fromFileName fileName: String) throws -> DataType {
        //loading
    }
}
Run Code Online (Sandbox Code Playgroud)

我想Archivable用作另一个类的属性:

class TestClass {

    let arciver: Archivable = Archiver() //error here: Protocol 'Archivable' can only be used as a generic constraint because it has Self or associated …
Run Code Online (Sandbox Code Playgroud)

generics protocols swift

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

"frameworkname"-Swift.h中的通用类导致Xcode 6.3中的"类型名称需要说明符或限定符"错误

我更新到Xcode 6.3,我的工作区中有两个独立的项目(一个是框架).现在,Xcode自动生成了这个"frameworkname"-Swift.h头文件,但是当我将泛型类作为属性时,它会生成以下行:

@class Presentation;
SWIFT_CLASS("_TtC13BusinessLogic31MeetupDetailViewControllerModel")
@interface MeetupDetailViewControllerModel : NSObject
@property (nonatomic) /* RsvpStore<Rsvp> */ anRsvpStore;
@end
Run Code Online (Sandbox Code Playgroud)

Objective-c中没有gerenics,所以我该如何解决这个问题呢?

我发现如果我将类型设置为NSObject,我可以解决问题:

@property (nonatomic) NSObject * __nonnull anRsvpStore;
Run Code Online (Sandbox Code Playgroud)

但是对于每个构建,此文件都会重新创建为相同的错误版本.那么我如何强制这个构建来将这个泛型的类型设置为NSObject?

generics objective-c swift xcode6.3

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

从另一个文件快速访问变量

我是一个 swift 程序员新手,我被要求编写一个应用程序,允许您输入一个单词,然后生成一个随机的俳句 这是一个选项卡式应用程序,有两个 ViewController。(诗)根据那个词。所以在 FirstViewController 中我有数据,我想在 SecondViewController 中以一种很好的方式显示该数据。我有所有的诗行和所有在 FirstViewController 中,但我想在 SecondViewController 中访问这些变量。我尝试创建一个函数,它只返回它们,然后在 SecondViewController 中调用该函数,但没有任何结果,因为该函数只是返回 nil。如果你们中的任何人可以帮助,我会很高兴谢谢!

这是 FirstViewController:

import UIKit
import Foundation


class FirstViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var keyWordTextField: UITextField!

@IBOutlet weak var syllableSlider: UISlider!   
@IBOutlet weak var syllableSliderLabel: UILabel!
var syllableSliderValue = 1


@IBOutlet weak var lineOneTextField: UITextField!

@IBOutlet weak var lineTwoTextField: UITextField!
@IBOutlet weak var lineThreeTextField: UITextField!


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    lineOneTextField.text …
Run Code Online (Sandbox Code Playgroud)

xcode viewcontroller ios swift

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