前一段时间,我遇到了一个奇怪的Swift问题。当我尝试在调试中将Swift对象转换为NSObjectProtocol时,它会成功执行。但是,当此代码在AppStore版本中执行时,它强制转换为nil。
import Foundation
final class MyClass {
let testP: String = "123"
}
struct MyStruct {
let testP: String = "123"
}
let myClass = MyClass()
let myStruct = MyStruct()
print(myClass) // >> __lldb_expr_1.MyClass
print(myClass as! NSObjectProtocol) // >> __lldb_expr_1.MyClass
print(myStruct as! NSObjectProtocol) // >> __lldb_expr_3.MyStruct(testP: "123")
当我将结构强制转换为NSObjectProtocol时,会得到这样的警告:
Cast from 'MyStruct' to unrelated type 'NSObjectProtocol' always fails
但是,如何看到它成功打印了我的结构。
因此,问题是:是Bug还是Swift的功能?)
PS:对不起,我的法语
答案 0 :(得分:0)
public class Main {
public static void main(String[] args) {
int pizza = 1;
int burger = 2;
int fries = 3;
int FishnCHips = 4;
List<String> foodList = new ArrayList<String>();
System.out.print("Which food do you want?");
foodList.add("pizza");
foodList.add("burger");
foodList.add("fries");
foodList.add("Fish and chips'");
int randomIndex = (int) (Math.random()) * foodList.size();
System.out.println("Two random foods : " + foodList.get(randomIndex));
int secondrandomIndex = (int) (Math.random()) * foodList.size();
System.out.println("Two random foods : " + foodList.get(secondrandomIndex));
有一些用于NSObjectProtocol
的方法,您需要遵守协议的方法。
您可以在官方Apple documentation中阅读什么
可以将符合此协议的对象视为 一流的对象。可以询问这样的对象:
类,及其类在继承层次结构中的位置。
符合协议。
回复特定消息的能力。
答案 1 :(得分:0)
显然,它既是错误,又是功能。 https://bugs.swift.org/browse/SR-10495