class 和 struct
Swift 中的类和结构体很相像,他们共有了很多功能。最大的区别在于 struct 是值类型而 class 是引用类型。
setValue:forKey与setObject:forKey的差异
在使用NSMutableDictionary的时候经常会使用setValue forKey与setObject forKey,他们经常是可以交互使用的,代码中经常每一种的使用都有。
2015年12月4日,苹果正式开放了 Swift 的源代码,Swift 也从此开启了走向了各个平台的征程。苹果首先对 Linux 提供了支持,至于 Windows 嘛…(对于Windows平台的支持)在Swift开源的初版中,这并不是我们所首要考虑的问题--费德里希
反正这件事自然有人会去做的。这篇文章对在 Ubuntu 上部署 Swift 开发环境进行描述(实际上就是翻译啦)。
打开终端在客户机上生成公钥和私钥:
ssh-keygen -t rsa -C {comment_text} -f {my-key-file}
你将会得到两个文件分别是私钥 my-key-file
和公钥 my-key-file.pub
将公钥上传到你需要访问的服务器上,建议使用 scp
命令:
scp {my-key-file}.pub -P {端口号} {username}@{ip_address}:.
使用密码登陆你的服务器,然后在 ~/
下执行:
cat my-key-file >> ~/.ssh/authorized_keys
退出连接回到本地终端,回到生成公钥私钥的目录下面执行
cp my-key-file ~/.ssh/
将私钥复制到 ~/.ssh/
目录下面。
执行 vim ~/.ssh/config
编辑配置文件,以下是个例子,仅供参考:
1 | Host alias-name |
修改后保存。这是还需要一步,就是清除掉之前登陆留下的密钥缓存,之后才可以确保正常登录。
执行 vim ~/.ssh/known_hosts
查找 Hostname 对应的记录,将其删除保存文件即可。
这时就可以执行无密码登录了 ssh alias-name
,爽爽哒。
可能会遇到配置完成之后连接服务器依然需要输入密码的情况,这一般是由于 .ssh,公钥文件的权限问题导致的,可以按照这个文章中的解决方案进行处理。
ssh 会话默认情况下很快就会过期,这在使用中很不方便,不过不要紧,这同样有解决办法
1.What is category? Can you have properties or ivars in a category?
可以,但不能在非匿名类别中使用实例变量。非匿名类别中的属性不会被合成setter/getter方法。需要使用关联对象来解决。
2.What is protocol? What is formal and informal protocol?
协议是一种用于实现多态的机制,遵守协议意味着协议中规定的必须方法需要被实现。是对象能力的一种保证。调用方只要知道被调用放遵守了协议即可,无需知道被调用方是什么类型。
正式协议是使用 protocol
关键字实现的,非正式协议即NSObject类别。
3.What is ARC? Is it garbage collection?
ARC 是自动引用计数,不是垃圾收集。实质上 ARC 还是一种手动的内存管理机制。对象是否释放需要根据引用计数是否为0来判断。引用计数将对对象内存的管理集中在了对象内部。而malloc/free new/delete是在外部的。且release只会减少引用计数,并不会直接收回内存。垃圾收集是全自动的,内存完全由垃圾收集器进行管理。
4.Difference between atomic and nonatomic properties?
atomic保证了属性setter/getter方法操作的原子性(加锁),会带来一定的开销。但并不意味着线程安全。因为在当前线程第一次读取到属性的当前值,紧接着另一个线程对属性进行了修改,此时当前线程又读取该属性就会造成数据的不一致。
nonatomic是不保证原子性的,开销较少。
在 Objective-C 的 Fondation 框架中 NSString 对象是很复杂的存在,各种方式创建以及不同长度的字符串都会影响 NSString 对象在内存中所处的位置。Objective-C 在运行时也对其做了很多优化。今天就来研究一下 NSString 这个复杂的对象。
实例方法(实例方法)消息转发的顺序如下:
1、检查忽略的Selector,比如当我们运行在有垃圾回收机制的环境中,将会忽略retain和release消息。
2、检查receiver是否为nil。不像其他语言,nil在objective-C中是完全合法的,并且这里有很多原因你也愿意这样,比如,至少我们省去了给一个对象发送消息前检查对象是否为空的操作。如果receiver为空,则会将 selector也设置为空,并且直接返回到消息调用的地方。如果对象非空,就继续下一步。
XcodeGhost S: A New Breed Hits the US
November 03, 2015 | By Yong Kang , Zhaofeng Chen, Raymond Wei | Threat Research, Botnets
apple logo grey
Just over a month ago, iOS users were warned of the threat to their devices by the XcodeGhost malware. Apple quickly reacted, taking down infected apps from the App Store and releasing new security features to stop malicious activities. Through continuous monitoring of our customers’ networks, FireEye researchers have found that, despite the quick response, the threat of XcodeGhost has maintained persistence and been modified.