草庐IT

可空性

全部标签

ios - 我们可以在 objective-c 中创建可空/非空属性吗?

我们可以在objective-c中创建可空/非空属性吗?如果是,那么如何? 最佳答案 您可以使用_Nullable和_Nonnull限定符@property(copy,nullable)NSString*name;@property(copy,nonnull)NSArray*allItems;nonnull:指示指针应该/永远不会为nil。用nonnull注释的指针作为它们的非可选基值(即NSData)导入到Swift中。nullable:表示指针在一般情况下可以为nil。作为可选值(NSURL?)导入Swift。

Swift:对可空/可选类型感到困惑

我是Swift和iOS编码的新手,一直在努力编写我的第一个应用程序。虽然我的编程背景非常重要,但我来自Python和C#背景,其中几乎所有内容都可以是None或null并且由用户在运行时检查一个空。我发现Swift中“可空类型与不可空类型”或“可选类型”的整个概念令人困惑。我理解核心概念是不能将声明为myObject类型的变量设置为nil。但是,如果我将它定义为myObject?类型,那么该值可以设置为nil。问题是,当我查看我的代码设计时,感觉代码中的一切都必须是“可空的”。感觉这要么意味着我没有正确思考我的代码应该如何运行,要么我缺少一些关键的理解。让我们举一个我感到困惑的最简单的

ios - Swift1.2 中可空性注解的默认值是多少

从Xcode6.3beta开始,它为Objective-C引入了可空性以简化swift和oc之间的互操作性,似乎有四种选择,即nonnull、nullable、null_unspecified和null_resettable。它们都可以应用于属性、参数和返回类型,但如果不指定,默认值是多少。我猜是null_unspecified,但我想确认一下。 最佳答案 所有指针都被视为null_unspecified除非您另有注释。一旦你开始注释,你就会开始收到关于该类的警告,直到你注释完所有内容。您可以使用新的#pragma标记将代码块的默认

Swift 在可空性可用之前使用 Implicitly Unwrapped Optional

在Apple关于可空性的博客中,他们提到了这一点:"...inSwiftthere’sastrongdistinctionbetweenoptionalandnon-optionalreferences,e.g.NSViewvs.NSView?,whileObjective-CrepresentsbothsofthesetwotypesasNSView*.BecausetheSwiftcompilercan’tbesurewhetheraparticularNSView*isoptionalornot,thetypeisbroughtintoSwiftasanimplicitlyunw

objective-c - 指针在自动生成的 ModuleName-Swift.h 文件中缺少可空性类型说明符

我有一个带有swift和ObjC源代码的项目,在自动生成的头文件中有一条奇怪的消息:标记错误的代码://interfaceinModuleName-Swift.hfile@interfacePointsList:NSObject-(nonnullinstancetype)initOBJC_DESIGNATED_INITIALIZER;-(nonnullinstancetype)initWithPoints:(NSArray*/*thismarkedwithwarning*/_Nonnull)pointsOBJC_DESIGNATED_INITIALIZER;//Warning:Poin

objective-c - NSError、Swift 和可空性

我正在用Objective-C编写一组工具,Swift有时会使用这些工具,因此我使用了泛型和可空性。在这种情况下我该怎么办?-(NSArray*__nullable)foo:(NSError**)error;目前我收到警告:Pointerismissinganullabilitytypespecifier...forbothpointers!我几乎可以肯定我不应该这样做:-(NSArray*__nullable)foo:(NSError*__autoreleasing__nullable*__nullable)error;我是吗? 最佳答案

ios - 指针在函数接口(interface)上缺少可空性类型说明符

本来,我有一些非常简单的东西,如下所示。UIAlertAction的自定义类别,这样我就可以通过[UIAlertActionokay];创建一个okay操作@interfaceUIAlertAction(Custom)+(UIAlertAction*)okay;@end@implementationUIAlertAction(Custom)+(UIAlertAction*)okay{return[UIAlertActionactionWithTitle:@"Ok"style:UIAlertActionStyleCancelhandler:nil];}@end后来,我决定我也想要一个带有

c#-4.0 - Redis 将 HashSet 获取到所需的类型而不适用于可空类型

我已经通过以下方法将我的类值插入到redis中publicstaticboolInsertHashItem(stringkey,objectobj){boolresult=false;try{if(Muxer!=null&&Muxer.IsConnected&&Muxer.GetDatabase()!=null){IDatabasegetDatabase=Muxer.GetDatabase();getDatabase.HashSet(key,ToHashEntries(obj));result=true;}}catch(Exceptionex){Logger.Fatal(ex.Mess

Objective-C 可空性 : Qualifying Constant Strings

我已经养成了一个很好的习惯,即为诸如NSNotification名称之类的东西声明和使用常量字符串。我这样声明它们:externNSString*constABCAwesomeThingHappenedNotification;随着Xcode6.3和Swift1.2的推出,我将回顾并审核使用新的nonnull、nullable和Swift互操作的Objective-C类null_unspecified限定符。将限定符添加到也具有外部可见静态字符串的header时,我收到以下警告:warning:pointerismissinganullabilitytypespecifier(__no

c# - C# 中的可空类型是什么?

当我们必须在C#.net中使用nullable类型时?谁能举例说明一下。 最佳答案 可空类型(Whentousenullabletypes)是可以将null作为值的值类型。它的默认值是null意味着你没有给它赋值。值类型的示例有int、float、double、DateTime等。这些类型具有这些默认值intx=0;DateTimed=DateTime.MinValue;floaty=0;对于Nullable替代方案,以上任何一项的默认值为nullint?x=null;//novalueDateTime?d=null;//noval