nev*_*ing 4 struct objective-c
我正在使用NSRange(一个结构)并像这样初始化它:
@interface MyViewController : UIViewController
{
NSRange currentRange;
}
Run Code Online (Sandbox Code Playgroud)
NSRange有一个位置和长度字段.
如何检查结构是否已使用值初始化?我试过了:
if (myRange.length == nil)
Run Code Online (Sandbox Code Playgroud)
但是编译器抱怨将指针与整数进行比较.谢谢.
小智 9
nil是一个指针,但是length是一个整数,因此编译器警告.你可以比较length到0,但随后这对在长度的合法值NSRange.如果我需要一个"尚未初始化"的值currentRange,我会选择将其设置为:
{ .location = NSNotFound, .length = 0 }
Run Code Online (Sandbox Code Playgroud)
在-init.当然,这假设范围在操作过程中永远不会假设该值.如果范围可以真正采用其域中的任何值,则您不能将它们中的任何一个用作"尚未初始化"的占位符.
您可以选择存储指向范围的指针,该范围为NULL,直到设置范围为止.另一种选择是使用状态模式来区分范围设置之前和之后的状态.另一个是设计类及其接口契约,使得范围仅在设置后才被使用.