这是场景:
这是一个简单的任务管理器应用程序.我在TaskDetailVIEw上有两个文本控件(Taskname,TaskDescription)和两个字符串变量,它们具有相同的名称,但在TaskDetailVIEwController中声明的lowerCamelCase(taskname,taskDescription)中.
@IBOutlet var Taskname:UITextFIEld! //UpperCamelCase@IBOutlet var TaskDescription:UITextVIEw! //UpperCamelCasevar taskname:String? //lowerCamelCasevar taskDescription:String? //lowerCamelCase
我像往常一样在VIEwDIDLoad()上设置Text控件的值:
overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() Taskname.text = taskname TaskDescription.text = taskDescription}
我像往常一样在prepareForSegue(来自TaskListVIEwController)中传递数据:
overrIDe func prepareForSegue(segue: UIStoryboardSegue!,sender: AnyObject!) { if(segue.IDentifIEr == "TaskListSegue"){ let detailVIEwController = segue.destinationVIEwController as TodoTaskVIEwController let (task,desc) = m_TodoListManager.GetTask(TaskListVIEw.indexPathForSelectedRow().row) println("selected \(task) \(desc)") detailVIEwController.taskname = task detailVIEwController.taskDescription = desc }}
一切实施的方式都是正确的.
但是现在当您运行应用程序时,未设置文本控件的值.
实际上,也没有设置变量的值.
这里一定要发生什么?
我已经调查了这个问题,并提出了一个解决方案(请参阅下面的答案).另请参阅Martin R的答案以获得详细说明.我只是想与大家分享这个.我不确定是否有人遇到过这个问题.
更新:
这是实际代码:https://github.com/Abbyjeet/Swift-ToDoList
>你的Swift类(最终)是NSObject的子类.
>因此,属性是具有getter和setter方法的Objective-C属性.
>属性的setter方法的名称是通过大写第一个来构建的
财产名称的字母,例如属性“foo”具有setter方法setFoo:
因此,属性Taskname和taskname的setter方法称为setTaskname:.
在Objective-C文件中,您将收到编译器错误
synthesized propertIEs ‘taskname’ and ‘Taskname’ both claim setter ‘setTaskname:’ – use of this setter will cause unexpected behavior
但是Swift编译器没有注意到冲突.
问题的一个小演示:
class MyClass : NSObject { var prop : String? var Prop : String?}let mc = MyClass()mc.prop = "foo"mc.Prop = "bar"println(mc.prop) // barprintln(mc.Prop) // nil
在你的情况下
Taskname.text = ...
设置“taskname”属性,而不是“Taskname”.属性有不同的类型,
所以行为是不确定的.
请注意,只有“Objective-C兼容”属性才会出现此问题.如果删除了
在上面的例子中,NSObject超类,输出是预期的.
结论:您不能只有两个不同的Objective-C属性第一个字母的情况. Swift编译器应该在这里失败并出现错误(如Objective-C编译器确实).
总结以上是内存溢出为你收集整理的ios – 在lowerCamelCase中命名变量时的奇怪行为全部内容,希望文章能够帮你解决ios – 在lowerCamelCase中命名变量时的奇怪行为所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)