小编The*_*ant的帖子

在Swift中:数组VS NSArray VS [AnyObject]之间的差异

正如标题所说,Array vs NSArray与[AnyObject]之间有什么区别?

此外,最推荐的方法是什么.我的意思是推荐,最简单的实现是什么.谢谢.

collections ios data-structures swift

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

Xcode - 是否可以在Interface Builder的实时渲染过程(IBDesignable)中调试崩溃?

是否可以设置Xcode/Interface Builder的实时渲染执行的断点和调试代码?也就是说,我使用IBDesignable和IBInspectable属性来影响视图,因为它在界面构建器故事板中呈现,并且希望能够调试"IB崩溃"错误.我不记得WWDC会话中的这个,除了关于prepareForInterfaceBuilder的部分.

上下文

我最近开始看到一些错误报告在尝试渲染我的代码时IB崩溃了.我最终将它追溯到layoutSubviews中的一个无辜的代码行,在我的一个视图中,它是从故事板链接的.IB在渲染实时视图时的特定问题,在设置所有视图的子视图属性之前称为layoutSubviews(这本身就是一个单独的问题).这与模拟器和设备形成对比,其中视图是在第一次调用layoutSubviews之前设置的.不过长话短说,它涉及分散一堆文件以找到违规的变化.可以说,如果可以设置断点并捕获崩溃,我本可以快速找到问题.

有没有人想出如何调试和/或一般陷阱这些问题,或者该访问还没有?

macos xcode interface-builder ios

23
推荐指数
2
解决办法
6047
查看次数

如何在swift中对字典中的TableView项进行分组?

让我们考虑这个例子:

import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 
    @IBOutlet weak var tableView: UITableView!

    var names = ["Vegetables": ["Tomato", "Potato", "Lettuce"], "Fruits": ["Apple", "Banana"]]

        func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{

        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier:"test")

    return cell
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
    return ???
    }
    func numberOfSectionsInTableView(tableView: UITableView) -> Int{      
    return names.count
    }

    func sectionIndexTitlesForTableView(tableView: UITableView) -> [AnyObject]!{

    return ???
    }

    func tableView(tableView: UITableView,
        titleForHeaderInSection section: Int) -> String?{        
    return ????
    } …
Run Code Online (Sandbox Code Playgroud)

uitableview ios swift

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

Rust如何实现仅编译时指针安全性?

我已经读过某个地方,在一个具有指针的语言中,编译器无法在编译时完全决定是否所有指针都被正确使用和/或有效(参考活动对象)由于各种原因,因为那样做基本上构成解决停止问题.直觉上这并不奇怪,因为在这种情况下,我们能够在编译期间推断出程序的运行时行为,类似于此相关问题中所述的内容.

但是,据我所知,Rust语言要求指针检查完全在编译时完成(没有与指针相关的未定义行为,至少是"安全"指针,并且没有"无效指针"或"空指针"运行时例外).

假设Rust编译器无法解决暂停问题,那么谬误在哪里呢?

  • 是不是指针检查不是完全在编译时完成的,而Rust的智能指针仍然会引入一些运行时开销,比如C中的原始指针?
  • 或者Rust编译器是否有可能无法做出完全正确的决策,有时需要Just Trust The Programmer™,可能使用其中一个生命周期注释(具有<'lifetime_ident>语法的注释)?在这种情况下,这是否意味着指针/内存安全保证不是100%,仍然依赖程序员编写正确的代码?
  • 另一种可能性是Rust指针在某种意义上是非"通用的"或受限制的,因此编译器可以在编译时完全推断它们的属性,但它们不像C中的原始指针或C++中的智能指针那样有用.
  • 或者它可能是完全不同的东西,我误解了一个或多个
    { "pointer", "safety", "guaranteed", "compile-time" }.

pointers rust memory-safety

15
推荐指数
2
解决办法
1948
查看次数

严格的别名规则真的是"双向的"吗?

这些评论用户@Deduplicator坚持认为,严格别名规则允许通过一个不兼容的类型的访问,如果任一混叠或混叠指针的是一个指针到字符的类型(合格或不合格,符号或无符号char *).所以,他的断言基本上都是这两个

long long foo;
char *p = (char *)&foo;
*p; // just in order to dereference 'p'
Run Code Online (Sandbox Code Playgroud)

char foo[sizeof(long long)];
long long *p = (long long *)&foo[0];
*p; // just in order to dereference 'p'
Run Code Online (Sandbox Code Playgroud)

符合并定义了行为.

但是,在我的阅读中,它只是第一种有效的形式,也就是说,当别名指针是指向char的指针时; 但是,在另一个方向上不能这样做,即当别名指针指向不兼容的类型(字符类型除外)时,别名指针为a char *.

所以,上面第二个片段会有未定义的行为.

情况怎样?它是否正确?为了记录,我已经阅读了这个问题和答案,并且接受的答案明确指出了这一点

规则允许例外char *.它总是假设char *其他类型别名.但是这不会起作用,没有假设你的结构别名为chars的缓冲区.

(强调我的)

c pointers strict-aliasing

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

使用Swift将int分为双打

func avg(numbers: Int...) -> Double {
    var sum = 0;
    var i = 0;
    for number in numbers {
        sum += number;
        ++i;
    }
    return sum / i;
}
avg(42, 597, 12);
Run Code Online (Sandbox Code Playgroud)

该行return sum / i导致错误Could not find an overload for '/' that accepts the supplied arguments.

我应该在这做什么?

swift

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

复制与强大的属性

我在iOS中比较新鲜,我想知道什么时候我们应该copy在一个属性中使用,例如

@property (nonatomic, retain) NSString* name;
Run Code Online (Sandbox Code Playgroud)

VS

@property (nonatomic, copy) NSString* name;`
Run Code Online (Sandbox Code Playgroud)

retain和之间有什么区别,什么copy时候应该使用一个而不是另一个?

iphone cocoa objective-c ios

10
推荐指数
2
解决办法
4319
查看次数

Emacs支架和支架突出显示?

输入代码时,Emacs会突出显示匹配的支架或支架.使用现有代码,如果我突出它的双胞胎,有没有办法要求它突出显示匹配的支架或支架?

在处理编译器错误和警告时,我经常尝试进行健全性检查.我通常在编码之前输入两个大括号,然后插入代码,但在调试时注释掉代码时,有时会无意中注释掉一个大括号.

处理与Emacs匹配的支架和支架的任何建议?

操作系统主要是Linux/Unix,但我也在OS X和Windows上使用它.

c c++ linux emacs coding-style

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

无法调用'saveInBackgroundWithBlock'

我已经在GitHub,parse.com和其他地方检查了很多次语法,没有任何运气.问题是当我为PFObject调用saveInBackgroundWithBlock时,我收到以下错误:

无法使用类型'((Bool,NSError) - > Void)的参数列表调用'saveInBackgroundWithBlock'

我正在使用Xcode 6.3 beta 2.所有框架都加载到项目中(包括Bolts&Parse,但不是由parse.com ParseCrashReporting和ParseUI提供),<Parse/Parse.h>甚至<Bolts/Bolts.h>是通过Bridge Header引入的.

var score = PFObject(className: "score")
    score.setObject("Rob", forKey: "name")
    score.setObject(95, forKey: "scoreNumber")
    score.saveInBackgroundWithBlock {
        (success: Bool!, error: NSError) -> Void in
        if success == true {
            println("Score created with ID: \(score.objectId)")
        } else {
            println(error)
        }
    }
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

ios parse-platform swift

7
推荐指数
2
解决办法
4399
查看次数

在不同限定的struct成员上使用reinterpret_cast是否安全?

我查看了以下相关的问题,但似乎没有一个问题可以解决我的确切问题:,,.

我正在编写一个集合,其中存储了元素(键值对)以及一些簿记信息:

struct Element {
    Key key;
    Value value;
    int flags;
};

std::vector<Element> elements;
Run Code Online (Sandbox Code Playgroud)

(为简单起见,假定两个KeyValue是标准布局的类型.收集将不会与任何其他类型的反正使用).

为了支持基于迭代器的访问,我编写了迭代器,它们分别覆盖operator->并向operator*用户返回键值对的指针和引用.但是,由于集合的性质,永远不允许用户更改返回的密钥.出于这个原因,我已经宣布了一个KeyValuePair结构:

struct KeyValuePair {
    const Key key;
    Value value;
};
Run Code Online (Sandbox Code Playgroud)

operator->在迭代器上实现了这样的:

struct iterator {
    size_t index;

    KeyValuePair *operator->() {
        return reinterpret_cast<KeyValuePair *>(&elements[index]);
    }
};
Run Code Online (Sandbox Code Playgroud)

我的问题是:这是使用reinterpret_cast定义明确,还是调用未定义的行为?我试图解释标准的相关部分并检查有关类似问题的问题的答案,但是,我没有从中得出明确的结论,因为...:

  • 这两种结构类型共享一些初始数据成员(即,keyvalue),这些成员只有不同的const资格;
  • 标准没有明确说明T并且cv T是布局兼容的,但它也没有说明相反的情况; 此外,它要求它们具有相同的表示和对齐要求;
  • 如果第一个很多成员具有布局兼容类型,则两个标准布局类类型共享一个共同的初始序列;
  • 对于包含共享一个公共初始序列的类类型成员的联合类型,允许使用任一联合成员​​(9.2p18)检查此类初始序列的成员.- 对于reinterpret_cast共享一个公共初始序列的ed指针到结构,没有类似的明确保证. - …

c++ strict-aliasing language-lawyer reinterpret-cast c++11

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