小编Mar*_*sel的帖子

为什么要投指针?

我有一个关于C指针和转换的基本问题.
我不明白为什么要施放指针?

我只是尝试了这个代码,我为每个选项获得了相同的输出:

#include <stdio.h>

int main(void)
{
    int x = 3;
    int *y = &x;
    double *s;

    option 1: s = (double*)y;
    option 1: printf("%p, %d\n", (int*)s, *((int*)s));
    option 2: s = y;
    option 2: printf("%p, %d", s, *s);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么我必须这样做s = (double*)y
直观地说,所有变量的地址都是相同的.差异应该是从该地址读取多少字节.此外,关于打印 - 如果我使用%d它将自动采取int.

为什么我需要把它作为一个int*
我错了吗?

c pointers casting

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

使用结构作为NSDictionary的键

我正在尝试使用struct一个键作为键NSDictionary.根据文档,它必须符合Hashable协议.
我这样做,但我得到一个错误DateRange不符合协议HashableEquatable.我该如何解决这个问题?
这是我的代码:

struct DateRange: Hashable {
    var startDate: NSDate {
        return self.startDate.timeIntervalSince1970.hashValue
    }

    var endDate: NSDate {
        return self.endDate.timeIntervalSince1970.hashValue
    }
}
Run Code Online (Sandbox Code Playgroud)

xcode cocoa-touch ios swift

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

点击时如何将播放按钮更改为暂停按钮?

我需要将播放按钮更改为暂停按钮,反之亦然.我还是新手,所以我不知道如何识别.swift文件中的按钮或如何在文件中以编程方式更改图标.swift.

import UIKit
import AVFoundation

class ViewController: UIViewController {

    var player = AVAudioPlayer()

    var toggleState = 1

    @IBAction func playPauseButton(sender: AnyObject) {
        if toggleState == 1 {
            player.play()
            toggleState = 2
        } else {
            player.pause()
            toggleState = 1
        }
    }

    @IBAction func stopButton(sender: AnyObject) {
        player.stop()
        player.currentTime = 0 
    }

    @IBAction func sliderChanged(sender: AnyObject) {
        player.volume = sliderValue.value
    }

    @IBOutlet weak var sliderValue: UISlider!

    override func viewDidLoad() {
        super.viewDidLoad()

        var audioPath = NSBundle.mainBundle().pathForResource("StarWars", ofType: "mp3")!
        var …
Run Code Online (Sandbox Code Playgroud)

uibutton ios swift

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

如何简洁地访问给定`Index`的`String`s?

在Swift 3中,SE-0065更改了Collections 的索引模型,其中索引遍历的责任从索引移动到集合本身.例如,不是写作i.successor(),而是写作c.index(after: i).

这对于String在某个索引处访问s 意味着什么,而不是写这个:

let aStringName = "Bar Baz"
aStringName[aStringName.startIndex.advancedBy(3)]
Run Code Online (Sandbox Code Playgroud)

......我们现在要写这个:

aStringName[aStringName.index(aStringName.startIndex, offsetBy: 3)]
Run Code Online (Sandbox Code Playgroud)

这看起来非常多余,正如aStringName所提到的那样.所以我的问题是,如果有办法绕过这个(除了写一个扩展String)?

string indexing swift swift3

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

标签 统计

swift ×3

ios ×2

c ×1

casting ×1

cocoa-touch ×1

indexing ×1

pointers ×1

string ×1

swift3 ×1

uibutton ×1

xcode ×1