草庐IT

introspection

全部标签

iOS 阻止自省(introspection)

我想知道两件事:1-是否可以通过使用objective-c自省(introspection)来了解block的返回类型。例如:int(^CountBlock)(NSArray*array)我想知道它将返回的类型是int。第二个问题是:2-我可以持有对通用block的引用吗?我的意思是,基本上我可以做类似idmyBlock的事情,然后用这个回答第一个问题。我尝试过的这种东西是不可能的:idaBlock=^{NSString*aString=@"OMG";returnaString;};aBlock();因为编译器认为idaBlock不是函数或函数指针。 最佳答

swift - 使用子类在 Swift 中实现 NSCopying

考虑两个类。第一个是Vehicle,一个符合NSCopying的NSObject子类:classVehicle:NSObject,NSCopying{varwheels=4funccopyWithZone(zone:NSZone)->AnyObject{letvehicle=self.dynamicType()vehicle.wheels=self.wheelsreturnvehicle}}第二个类,Starship,继承自Vehicle:classStarship:Vehicle{varphotonTorpedos=6varantiGravity=trueoverridefuncco

swift - 使用子类在 Swift 中实现 NSCopying

考虑两个类。第一个是Vehicle,一个符合NSCopying的NSObject子类:classVehicle:NSObject,NSCopying{varwheels=4funccopyWithZone(zone:NSZone)->AnyObject{letvehicle=self.dynamicType()vehicle.wheels=self.wheelsreturnvehicle}}第二个类,Starship,继承自Vehicle:classStarship:Vehicle{varphotonTorpedos=6varantiGravity=trueoverridefuncco

generics - 在 Swift 中获取泛型类型的名称(字符串)

我有一个T类型的泛型类,我想获取在实例化时传递给该类的类型的名称。这是一个例子。classMyClass{funcgenericName()->String{//ReturnthenameofT.}}我已经四处寻找了几个小时,但我似乎找不到任何方法来做到这一点。有人试过这个吗?非常感谢任何帮助。谢谢 最佳答案 您可以使用字符串插值返回任何类型的名称:classMyClass{funcgenericName()->String{return"\(T.self)"}}您可以在playground中尝试它,它会按预期工作:varsomeC

generics - 在 Swift 中获取泛型类型的名称(字符串)

我有一个T类型的泛型类,我想获取在实例化时传递给该类的类型的名称。这是一个例子。classMyClass{funcgenericName()->String{//ReturnthenameofT.}}我已经四处寻找了几个小时,但我似乎找不到任何方法来做到这一点。有人试过这个吗?非常感谢任何帮助。谢谢 最佳答案 您可以使用字符串插值返回任何类型的名称:classMyClass{funcgenericName()->String{return"\(T.self)"}}您可以在playground中尝试它,它会按预期工作:varsomeC

ios - 在 Swift 中使用 isKindOfClass

我正在尝试学习一些Swift语言,我想知道如何将以下Objective-C转换为Swift:-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{[supertouchesBegan:toucheswithEvent:event];UITouch*touch=[touchesanyObject];if([touch.viewisKindOfClass:UIPickerView.class]){//yourtouchwasinauipickerview...dowhateveryouhavetodo}}更具体地说,我需要

ios - 在 Swift 中使用 isKindOfClass

我正在尝试学习一些Swift语言,我想知道如何将以下Objective-C转换为Swift:-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{[supertouchesBegan:toucheswithEvent:event];UITouch*touch=[touchesanyObject];if([touch.viewisKindOfClass:UIPickerView.class]){//yourtouchwasinauipickerview...dowhateveryouhavetodo}}更具体地说,我需要

C# "is"运算符 - 那是反射吗?

今天一位同事问了我一个有趣的问题-C#关键字/运算符“是否”被视为反射?objecttmp="astring";if(tmpisString){}这个操作符是如何在幕后实现的?是否需要反射(reflection)或反省?或者由于语言的强类型特性,对象的类型是否可以作为内存中对象的顶级属性立即访问?MSDN指出:Notethattheisoperatoronlyconsidersreferenceconversions,boxingconversions,andunboxingconversions.Otherconversions,suchasuser-definedconversio

C# "is"运算符 - 那是反射吗?

今天一位同事问了我一个有趣的问题-C#关键字/运算符“是否”被视为反射?objecttmp="astring";if(tmpisString){}这个操作符是如何在幕后实现的?是否需要反射(reflection)或反省?或者由于语言的强类型特性,对象的类型是否可以作为内存中对象的顶级属性立即访问?MSDN指出:Notethattheisoperatoronlyconsidersreferenceconversions,boxingconversions,andunboxingconversions.Otherconversions,suchasuser-definedconversio

javascript - 如果我不知道名称,如何访问 javascript 对象的属性?

假设你有一个像这样的javascript对象:vardata={foo:'bar',baz:'quux'};您可以通过属性名称访问属性:varfoo=data.foo;varbaz=data["baz"];但是,如果您不知道属性的名称,是否有可能获得这些值?这些属性的无序性质是否导致无法区分它们?在我的例子中,我特别考虑了这样一种情况:函数需要接受一系列名称-值对,但属性的名称可能会改变。到目前为止,我对如何做到这一点的想法是将属性的名称与数据一起传递给函数,但这感觉像是一个hack。如果可能的话,我更愿意通过内省(introspection)来做到这一点。