小编Cos*_*ows的帖子

Swift类型推断需要问号或感叹号

在阅读了Apple的ARC指南之后,我正在慢慢地试图掌握保留周期但是我不清楚的是swift的类型推断需要可选的问号或在全局范围内推断变量时强制解开感叹号.类.

例如:

import XCTest
@testable import PassionProject

class ItemManagerTests: XCTestCase {

    var sut: ItemManager!

    override func setUp() {
        super.setUp()
        // Put setup code here. This method is called before the invocation of each test method in the class.

        sut = ItemManager()
    }

    override func tearDown() {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
        super.tearDown()
    }

    func tests_ToDoCount_Is_InitiallyZero() {

        XCTAssertEqual(sut.toDoCount, 0)
    }

    func tests_DoneCount_Is_InitiallyZero(){

        XCTAssertEqual(sut.doneCount, 0)
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在下一行中省略了问号或解释点,则会抛出关于没有初始值设定项的类的错误: …

xcode ios swift

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

在 swift 中,函数可以是类型吗?

在通过按 command+click 研究 XCTAssert 方法时,看起来它们的底层方法是一个具有类型的函数(称为 T 的通用类型,符合 Equatable 协议)。我说得对吗?如果是的话,函数如何遵守协议?函数是类型吗?

public func XCTAssertEqual<T : Equatable>(_ expression1: @autoclosure () throws -> ArraySlice<T>, _ expression2: @autoclosure () throws -> ArraySlice<T>, _ message: @autoclosure () -> String = default, file: StaticString = #file, line: UInt = #line)
Run Code Online (Sandbox Code Playgroud)

这行是最令人困惑的,我在上面试图解释:

func XCTAssertEqual<T : Equatable>`
Run Code Online (Sandbox Code Playgroud)

generics xcode function ios swift

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

在Swift中存储没有初始化的对象

当我正在进行测试驱动的开发练习以更好地理解如何初始化和使用对象时,我遇到了一个测试用例,我在其中创建了一个对象,例如UITableView,但我没有必要使用UITableView的init函数.

以下是代码示例:

import XCTest
@testable import PassionProject

class ItemListDataProviderTests: XCTestCase {

    var sut: ItemListDataProvider!
    var tableView: UITableView!

    override func setUp() {
        super.setUp()
        // Put setup code here. This method is called before the invocation of each test method in the class.

        sut = ItemListDataProvider()
        tableView = UITableView()
        sut.itemManager = ItemManager()
        tableView.dataSource = sut
    }

    override func tearDown() {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
        super.tearDown()
    }

    func …
Run Code Online (Sandbox Code Playgroud)

oop ios xctest swift

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

为什么类的init方法中不需要隐式可选项?

我正在关注Ray Wenderlich网站上关于Swift中的ARC的教程,我很想知道为什么在操场上创建一个类时可选的允许但不是隐式的可选项?

我到目前为止的游乐场代码是:

class User {
    var name: String
    init(name: String) {
        self.name = name
        print("User \(name) is initialized")
    }
    deinit {
        print("User \(name) is being deallocated")
    }
}

class Phone {
    let model: String
    var owner: User?
    init(model: String) {
        self.model = model
        print("Phone \(model) is initialized")
    }
    deinit {
        print("Phone \(model) is being deallocated")
    }
}

do {
    let user1 = User(name: "John")
}
let user2 = User.init(name: "Berry")
Run Code Online (Sandbox Code Playgroud)

在Phone类中,如果我将所有者变量更改为带有感叹号的隐式可选项,则操场不会抛出错误,但是如果我删除问号或不使其成为可选项,则会收到错误.

如果未设置,则隐式可选强制应用程序是否会崩溃?

感谢任何帮助,以深入了解为什么隐式可选项是可以的.

optional automatic-ref-counting swift

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

c#中的起始点符号是什么?

我遇到了一个关于Full Stack .Net Web Development的教程,我从未见过使用点运算符对C#来说是这样的.有人可以解释为什么语句不以分号结尾,并且语句属于特定对象也意味着什么?

using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;

namespace MyApi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();

            host.Run();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c#

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

什么是亚毫秒精度?

我正在完成一个介绍闭包的动画教程。我开始在 Apple 的参考文档中搜索TimeInterval是什么。我很想知道什么是亚毫秒级精度?

nstimeinterval ios

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

在这个c#文件中,我是否只是在自己的类中声明了一个实例?

我正在学习C#语法,我刚刚使用Visual Studio创建了一个新文件.我添加了静态Main方法,但是上面的语法在创建时已经存在于文件中.我来自Swift背景,所以我想知道这个文件是否在自己的类中创建了自己的实例?

这是代码:

using System;

public class Blueberry
{
    public Blueberry()
    {
    }

    static void Main()
    {

    }

}
Run Code Online (Sandbox Code Playgroud)

有问题的部分没有意义如下:

public Blueberry()
    {
    }
Run Code Online (Sandbox Code Playgroud)

这段代码暗示什么?

c#

-7
推荐指数
1
解决办法
181
查看次数