草庐IT

unsafe_guard

全部标签

iphone - Xcode 升级到 4.5 后应用程序崩溃。将保留的对象分配给 unsafe_unretained 变量

在我的类(class)中,我有一个dispatch_queue_t属性声明如下:@property(nonatomic,assign)dispatch_queue_tqueue;然后在我的初始化方法中:-(id)initWithServerUrls:(NSString*)serverUrls{if(self=[superinit]){_queue=dispatch_queue_create("com.xxx.my_send_queue",DISPATCH_QUEUE_SERIAL);}returnself;}在Xcode4.4.1中它工作并且没有引起任何问题(应用程序在应用程序商店中测

objective-c - 使用 ARC、lifetime qualifier assign 和 unsafe_unretained

我对这两个限定词有点困惑...使用ARC而不是使用weak(即如果我需要支持iOS4)我可以使用unsafe_unretained失去自动零功能......最终结果似乎类似于赋值。我可以将unsafe_unretained与assign交换吗?这些限定符是一回事吗?有关此论点的Apple文档的任何链接都将非常有趣...我只能找到几行here 最佳答案 Clang的technicalspecificationofARC详细介绍了限定符的工作原理。但是,回答你的问题:assign和__unsafe_unretained不是一回事。ass

sockets - send() 之后直接关闭() 套接字 : unsafe?

在最后一个send()之后直接close()套接字是否明智/安全?我知道即使在关闭套接字后,TCP也应该尝试传送发送缓冲区中的所有剩余数据,但我真的可以指望它吗?我正在确保我的接收缓冲区中没有剩余数据,以便在我关闭后不会发送RST。在我的例子中,关闭实际上是调用exit()之前的最后一个代码语句。即使在发送数据的进程终止后,TCP堆栈真的会继续尝试传输数据吗?这是否与在通过设置SO_LINGER调用close()之前自己等待任意超时一样可靠?也就是说,应用相同的TCP超时还是更短?毕竟,如果发送缓冲区很大且连接速度较慢,实际传输所有缓冲数据的时间可能会很长。我对收到发送的最后一个字节的

Swift 语言 : how to continue after a guard statement?

为什么continue标记错误:continueisonlyallowedinsidealoopprivatefuncaddToUnloadedImagesRow(row:Int,forLocation:String!){guardunloadedImagesRows[forLocation]!=nilelse{unloadedImagesRows[forLocation]=[Int]()continue}unloadedImagesRows[forLocation]!.append(row)}我该如何解决? 最佳答案 contin

swift - 是否有 guard return 的简写形式?

有没有办法让guard自动返回而不需要每次都写出来,例如:guardleturl=self.webView.urlelse{return}guardletcomponentDict=URLComponents(string:url.absoluteString)?.dictelse{return}guardletid=componentDict["v"]else{return}guardletidUrl=URL(string:baseUrl+id)else{return}如果我实际上需要在return之外做一些事情,我会在我的额外处理中包含else{return}位。这不是什么大麻烦,

swift - Swift 中的 Guard 对 if 给出不同的答案

在一个比较两个链表的非常简单的程序中,我有一个递归函数来测试两个链表的当前节点是否相同,然后移动到下一个节点。基本情况是如果两个节点都为零,我们就退出。所以带有if/else的代码是:funccompareLL(llistOne:SinglyLinkedListNode?,llistTwo:SinglyLinkedListNode?)->Bool{if(llistOne==nil&&llistTwo==nil){returntrue}if(llistOne?.data==llistTwo?.data){returncompareLL(llistOne:llistOne?.next,ll

ios - 在 guard 语句的 else block 中使用 assert

我在GoogleAnalytics的实现说明中遇到了这个问题:guardletgai=GAI.sharedInstance()else{assert(false,"GoogleAnalyticsnotconfiguredcorrectly")}我从来没有想过可以在else子句中有一个断言,而不返回。这对我来说没有意义,因为断言只会在测试方案中进行评估。那么,为什么编译器不警告它没有返回(在发布版本的情况下)。编辑:这是在函数application(_:didFinishLaunchingWithOptions)->Bool中编辑2:我发现的其他信息可以回答它:Unfortunately

swift - 你如何在 Swift 的函数中放置一个 guard 语句?

我不明白为什么不能在返回函数中使用保护语句。funcsayHello(text:String?)->String{guardletwhatever=textelse{...return}return"aString"}为什么以上不正确?Xcode在guard闭包中的return语句中给我错误“非空函数应该返回一个值”,就像它认为returnstatement是函数的return语句。如何区分guard的return语句和函数的return语句?同样的事情发生在不返回的完成处理程序中:funcanotherFunction()->Bool{aFunction("hello",comple

ios - 将 if 语句更改为 guard 会引发此错误。条件绑定(bind)的初始化程序必须具有 Optional 类型,而不是 '(Bool, String)'

我想将以下if语句更改为守卫。这样做会引发以下错误条件绑定(bind)的初始化程序必须具有可选类型,而不是“(Bool,String)”知道我应该怎么做吗?任何帮助将不胜感激。谢谢dispatch_async(backgroundQueue,{let(success,errmsg)=client.connect(timeout:5)print("Connected",success)ifsuccess{let(success,errmsg)=client.send(str:self.jsonString)print("sent",success)ifsuccess{letdata=cl

ios - 在 guard 语句 swift 中呈现一个 ViewController

我正在尝试呈现viewcontroller,以防状态(Int?)为零,如下所示:guardletstatusCode=statuselse{DispatchQueue.main.async(){letinitViewController=self.storyboard!.instantiateViewController(withIdentifier:"SignInViewController")self.present(initViewController,animated:false,completion:nil)}return}我想知道这是否是最佳实践,因为在呈现ViewCont