- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当我运行下面的程序时,它会产生段错误。你能帮我弄清楚为什么吗?谢谢
class Animal:NSObject{
var name:String!
var age:UInt!
weak var spouse:Animal?
init(name:String,age:UInt){
self.name=name
self.age=age
}
func description() ->String{ //to become printable
return "name= \(name) and age=\(age) spouse=\(spouse)"
}
}
let dog=Animal(name:"Lucky",age:3)
let cat=Animal(name:"Branson",age:4)
dog.spouse=cat
cat.spouse=dog //It doesnt crash if I comment this line out
println(dog)
最佳答案
问题是打印中的无限递归。一旦你设置了完整的循环,打印一个动物,你打印它的配偶,打印它的配偶,打印它的配偶等等直到你用完堆栈空间并崩溃。
您需要通过打印出动物的配偶而不调用该动物的完整打印来打破这一点,如下所示:
class Animal: NSObject {
// you should avoid using implicitly unwrapped optionals
// unless you absolutely have to for a specific reason that
// doesn’t appear to apply here (so remove the !s)
var name: String
var age: UInt
weak var spouse: Animal?
init(name: String, age: UInt) {
self.name = name
self.age = age
}
}
// to make something printable, you need to conform
// to the Printable protocol
extension Animal: Printable {
// And make description is a var rather than a function
override var description: String {
let spousal_status = spouse?.name ?? "None"
return "name=\(name) and age=\(age), spouse=\(spousal_status)"
}
}
let dog = Animal(name: "Lucky", age: 3)
let cat = Animal(name: "Branson", age: 4)
dog.spouse = cat
dog.description
cat.spouse = dog
println(dog) // Prints name=Lucky and age=3, spouse=Branson
请注意,您必须使用协议(protocol)和 var 完全实现 Printable
以避免此问题,否则您将获得默认实现,但仍会遇到此问题。
顺便说一句,Swift 风格约定是在 =
、->
之间、{
等之间放置空格(实际上你如果不这样做,偶尔会导致编译问题)。 a:b
还是 a:b
还没有定论,不过我发现后者有点难读。
关于class - swift 类 : reference cycle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27753502/
发生这种情况是否有特定原因,或者可能有很多不同的原因?我不知道为什么我的程序打印出它正在打印的值,因为我希望它打印出整数。相反,我得到了这个: 周期@173a10f循环@a62fc3循环@a62fc3
长期读者,第一次发帖。 :) 我正在使用 jQuery Cycle 插件,可以在此处下载:http://jquery.malsup.com/cycle/ 我在帖子部分工作得很好,但是收到了一个请求,要
我正在使用 Malsup 的 Cycle() JQuery 插件,并尝试让它显示图库中的图像、缩略图列表以及每个缩略图下的标题。我的代码如下:
我在页面上使用jQuery Cycle(完整)插件,在该页面上使用宽度为75%的容器DIV(.content-left),并且在该容器内部使用jQuery Cycle幻灯片放映。该容器内的图像应自动调
我正在尝试使用 AFNetworking2.6.3 的 UIImageView 扩展从远程服务器获取图像。一切正常,图像已返回并成功渲染。但我在 Xcode7.3.1 中收到保留周期警告:在此 blo
我收到以下错误: [循环]终止;幻灯片太少:1 下面是 jQuery Cycle 的代码。我不知道为什么 Chrome 中会出现这个 var inners = $('ul#output li').cy
看来我已经超越了自己。一直以来,我都在创建这个漂亮的“最新消息”小部件,它会在鼠标悬停在每个 anchor 上时消失。然后我的同事说,“嘿,克里斯,这些链接不起作用” ...糟糕。我想知道我是否可以让
我可能在尝试一些愚蠢的事情,但我有一个足够大的 非-onionified Cycle.js 应用程序,我正在尝试学习如何 onionify可行,所以我想将一个 onionified 组件嵌入到我原来的
我必须检查 jQuery Cycle 幻灯片是否终止。我需要检查一下,因为我有多个幻灯片,我按顺序运行它,但是,当出现日志“[cycle] termination;too少幻灯片:1”时,因为幻灯片只
我构建了一个图像 slider ,旨在通过淡入和淡出在四个图像之间进行转换。我使用了 J Query 插件“Cycle”并将效果设置为“淡入淡出”。我还希望让用户能够通过将光标悬停在图像上来暂停幻灯片
我在我的程序中实现了这个伪代码来检查有向图是否是非循环的: L ← Empty list that will contain the sorted elements S ← Set of all no
我有时读到有些指令需要的时间少于一个时钟周期——这怎么可能?或者这就是流水线和乱序进入游戏时的值(value)? 最佳答案 来自 http://en.wikibooks.org/wiki/Microp
我需要能够通过程序循环我的 linksys 路由器,我想这样做的原因很复杂,所以让我们假设没有更好的选择。 有没有办法做到这一点?我认为这是因为当我通过管理控制台向路由器安装固件更新时,它会循环路由器
(我使用 OCaml 版本 4.02.3) 我定义了一个类型 self # type self = Self of self;; type self = Self of self 及其实例 s # l
我有相对较小(40-80 个节点)三次(3-正则)平面图,我必须确定它们的哈密顿性。我知道这个任务是 NP 完全的,但我希望渐近指数时间算法对于我感兴趣的图大小来说仍然非常快。 最佳答案 40 个节点
如何使用具有三个值的 {cycle}?这段代码有什么问题: value value1 最佳答案 我认为你需要给它们起唯一的名字: {cycle name='
我目前正在使用 jQuery.Cycle 来循环几个子项 标签。但是,我希望默认的周期 fx 为 fade ,当我点击next时或prev选择器,我希望循环效果暂时更改为 scrollRight或sc
我的 jQuery.cycle 插件有问题。第一次加载页面时(当未缓存图像时),它显示小图像,例如缩略图。您可以在(编辑:抱歉,旧链接)看到它 - 只需等待第二张图片显示即可 - 它很小。重新加载/刷
我正在使用循环插件并且它运行良好。但是 slider 一直在滑动,我不知道应该使用什么选项来防止它自动播放。 $('#thumbs').cycle({ fx: 'scrollH
我使用循环构建了一个播放器,可以循环播放各种宣传片,但我想为每个页面(1、2、3 等除外)定义特定的描述性寻呼机链接。我知道这应该是可能的,但不知道如何实现...即使我在寻呼机 div 中添加了元素,
我是一名优秀的程序员,十分优秀!