Swift:"奇怪"的事件响应链

初学iOS开发的童鞋可能会遇到各式奇怪的问题,这篇博文本猫就为大家介绍其中一个”怪异”问题.该问题很好重现: 1.使用xcode新建一个最简单的单vc工程,然后在Storyboard中新建一个destVC.然后从默认创建的VC(姑且称之为initVC)拉一条segue到destVC,并设置该segue ID为”ToDestVC”2.打开initVC类,只添加2个方法:override func t...
阅读(1147) 评论(1)

Mac中测试iOS模拟器sha1加密算法结果不同的原因

在iOS中想要实现sha1加密功能,于是使用objc桥接CommonCrypto/CommonDigest.h中的功能实现。在模拟器中运行App,然后将加密的结果和Mac中的结果比较,发现其中md5的值相符,但是sha1的加密结果却不相符。对于字符串helloworld,模拟器加密结果如下:md5 : fc5e038d38a57032085441e7fe7010b0 sha1 : 6adfb183a...
阅读(535) 评论(0)

Xcode 9.0在代码中任意键盘敲击不停build的解决

原来的项目在Xcode 8.3.3下行为正常,不过今天用Xcode 9.0打开后噩梦开始了,在代码中只要输入任何文字,哪怕是注释,Xcode都会立马编译项目,还顺带编译storyboard.这样一来结果就是:卡成狗了!尝试重启Xcode,Mac均无效,难道要退回Xcode 8.3.3去?经过一番搜索,原因却是出乎寻常的简单:在Storyboard里开启了自动刷新,并且你在某个视图中使用了IB_DES...
阅读(1227) 评论(6)

iOS关于TableView重用Cell的一点领悟

最近写App遇到了一个奇怪的问题,UITableViewCell的显示状态老是不对,调试了好久,在解决中又对Cell重用机制有了进一步的小领悟,愿与大家分享;)什么是Cell重用?简单的说你在方法func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell中使用了如下Cel...
阅读(633) 评论(0)

iOS运行App总是提示Unknown class in Interface Builder file的解决

使用Xcode 8.3.3构建App后,运行正常,但是调试console老是显示如下错误:Unknown class xxx in Interface Builder file这里的xxx是类的名字,在我的项目中是一个继承于UITableViewCell的类.为了便于管理和加载,我在创建xxx类时同时创建了对应的xib文件,所以一共是创建了2个文件:xxx.swfit xxx.xibApp在运行时需...
阅读(510) 评论(0)

iOS:在界面显示gif动画图片

默认cocoa touch无此功能,不过我们可以站在github肩上轻松实现该功能。github地址:https://github.com/bahlo/SwiftGif首先是安装CocoaPods,Pods依赖RubyGem,由于国内网络条件导致会出现安装卡死的现象,如果出现类似的问题,大家可以参考我ruby安装源的相关文章。安装CocoaPods本质上很简单,就一行命令:gem install c...
阅读(701) 评论(0)

MacOS中Safari地址栏卡顿以及经常自动跳转到MacKeeper站点的解决

MacOS的版本是10.12.5,之前浏览器再输入新的地址时会发生短暂卡顿.再安装了所谓的XXX激活器后,又多了个随意在Safari中跳转到MacKeeper站点的毛病!不想用TimeMachine还原,所以找到了一个办法,测试有效,与大家分享 :)https://www.malwarebytes.com/mac/到以上地址下载恶意软件清除工具,然后运行,在首次运行时需要输入系统密码.然后点击扫描(...
阅读(1019) 评论(0)

Swift减少print函数的耗费

尽管print声明不会在设备的console里打印,但它们甚至在Release版本和设备上也会执行,这些执行可能会带来一些耗费。特别的,它的参数仍然被模拟求值。如果你的print调用只有一个参数,这里有一个变通方法。你可以通过定义自己的全局级别的print方法来重写Swift的print方法,并且使用@autoclosure修饰器推迟其参数求值,就像assert做的那样:func print(_ i...
阅读(495) 评论(0)

Nibs真的有必要吗?

因为nibs本质上只是一系列资源的实例,你可能觉得是否有可能完全不用它们。这些相同的实例可以用代码创建,所以难道不可能完全省掉(nibs)吗?简单的说:可以!完全有可能写一个复杂的app省掉单独的.storyboard或者.xib文件。但实际的答案是:要注重平衡性!大多数app使用nib文件作为至少包含若干界面对象的资源;但是这里有些界面对象只能在代码中被定制,并且有时候从最初就用代码创建界面对象更...
阅读(527) 评论(0)

Swift协议合成(protocol composition)

我们知道类可以同时遵守多个协议,比如:protocol One{ func one(name:String) }protocol Two{ func two(age:Int) }class Root:One,Two{ }同样一个协议也可以遵守多个协议:protocol Comb:One,Two{ }class Root:Comb{ }不过如果我们在只是希望同时遵守多个协议而没有额外添...
阅读(712) 评论(0)

Swift计算属性和存储属性的重要区别

As the preceding example demonstrates, a computed instance property function can refer to other instance properties; it can also call instance methods. This is important, because in general the initial...
阅读(533) 评论(0)

Swift在同一条语句中传递方法结果到方法参数情况的处理

在相当稀罕的情况下,你想要将一个Cocoa方法的返回值立即传递给相同的方法里去使用.举个栗子,Cocoa有一个UIApplication实例方法:func beginBackgroundTask( expirationHandler handler: (() -> Void)? = nil) -> UIBackgroundTaskIdentifierbegin...
阅读(1105) 评论(0)

Swift多defer的执行顺序及特殊情况

如果在一个代码域中包含多个defer块,它们将按相反顺序执行;你可以把它们想象成一个栈。乍一看defer以相反顺序执行感觉很奇怪,但不管怎样,如果我们看一个实际的例子,就会觉得有道理:guard let database = openDatabase(...) else { return } defer { closeDatabase(database) } guard let connection...
阅读(727) 评论(0)

Swift静态和动态分发机制

Free functions, and methods called on structs, are statically dispatched. This means the function that’ll be called is known at compile time. This also means the compiler might be able to inline the fu...
阅读(779) 评论(0)

Rails出现ROLLBACK TO SAVEPOINT active_record_1信息的解决

使用sqlite3和postgresql均在rails console中存储数据库出现上述信息,无法正常生成记录,且无出错信息。具体表现为生成的记录key为:nil:rails版本为5.0.3,ruby版本为2.2.6.因为用2种数据库都出现同样错误,所以基本排除数据库引擎的问题。检查model及migration的定义,未发现问题!同一台mac上另一个rails 4.x的项目是正常的!在安装了ge...
阅读(767) 评论(0)

完善一个iOS程序的界面功能:使用StackView以及其他UI元素

原先的App用于从Github上下载Swift提交信息,然后显示出来。App通过Github暴露出来的API接口返回json信息,然后将其通过CoreData保存到本地数据库中。在最后作者遗留了4个未完成的问题,如下:• Fun: Now that we have section names in our table, using a sort descriptor for date descend...
阅读(1373) 评论(0)

SpriteKit游戏如何一步一步重构在场景中增加金币动画(二)

上一篇我们迅速构建了一个生成金币的原型,现在我们需要进一步完善我们的功能。首先,我们需要让小飞机碰到金币不会爆炸,稍后我们让“金币”更像一个金币 ;)现在飞机的物理对象设置如下:player.physicsBody = SKPhysicsBody(texture: playerTexture, size: playerTexture.size()) player.physicsBody!.conta...
阅读(920) 评论(0)

SpriteKit游戏如何一步一步重构在场景中增加金币动画(一)

一个类似flappy bird的游戏,作者基本为我们实现了所有有趣的东东,不过为了更富趣味性,我们再加点料:在场景中自动生成一些金币。运行原来的游戏画面如下:下面我来带领大家一步一步把功能完善成型 ;)首先我们写一个小的coinsCreate方法,简单测试一下原型是否可行。在写这个方法之前请允许我先明确两件事:1.金币的位置需要和岩石(rock)位置相呼应,你没道理把金币放到岩石里面去,那个太反人类...
阅读(970) 评论(0)

Cocoa使用GameplayKit人工智能影响用户UI的解决

一个4 IN Row小游戏,改写自Apple官方App的源代码。游戏用iOS9引入的游戏框架GameplayKit实现AI。玩家和电脑轮流下子,当任意一方连成4个同色棋子则宣告胜利,否则当棋盘下满则为平局,重新开始游戏。源代码写的很棒!但是有一个小缺陷:当玩家触摸屏幕选择位置放置棋子后,用户界面会卡住直到AI选择下子后,两枚棋子才依次落位,如果你不懂我说的是神马,请看下图:这不符合玩家的直觉,应该是...
阅读(495) 评论(0)

写入iCloud在模拟器和真机上失败的解决办法

使用CloudKit将数据写入iCloud时无论是在真机还是模拟器上均出现错误,提示网络连接失败。开发环境为Xcode 8.3.2,iOS版本为10.3.当提示网络错误时可以确认网络是没有问题的。而且打开模拟器或真机上苹果的iCloud App是没问题的。此时查看错误的debug描述如下:写入asset失败,iCloud network failure这是我决定换用代理vpn试一下,结果竟然一切正常...
阅读(819) 评论(0)
1079条 共54页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1688311次
    • 积分:26537
    • 等级:
    • 排名:第238名
    • 原创:791篇
    • 转载:98篇
    • 译文:190篇
    • 评论:576条
    关于侯佩 | hopy
    Asm , C , Javascript , Ruby , Objc , Swift
    iOS , MacOS , Linux , Windows
    Rails , SpriteKit , Cocos2D

    QQ : 1九7九61七4

    本猫用心写文章,如果帮助到你,请你任性打赏,以鼓励本猫猪写出更多更好的作品 :)


    博客打赏
    博客打赏
    博客专栏
    文章分类
    最新评论