使用Xcode8的Beta版本进行Objective-C/iOS程序调试时,使用NSLog无法输出日志,同时输出以下内容:
subsystem: com.apple.BaseBoard, category: MachPort, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
subsystem: com.apple.FrontBoard, category: Common, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
同样的Objective-C/iOS代码在Xcode7版本输出正常,没有出现。
苹果的官方论坛也有人提了Xcode8 beta的Bug
https://forums.developer.apple.com/thread/49136
Read more…
objective-c对AES/DES/3DES等加密提供了统一的加密方法CCCrypt进行实现,目前主要支持的算法有
@constant kCCAlgorithmAES128 Advanced Encryption Standard
@constant kCCAlgorithmAES Advanced Encryption Standard, 128-bit block
@constant kCCAlgorithmDES Data Encryption Standard
@constant kCCAlgorithm3DES Triple-DES, three key, EDE configuration
@constant kCCAlgorithmCAST CAST
@constant kCCAlgorithmRC4 RC4 stream cipher
@constant kCCAlgorithmBlowfish Blowfish block cipher
Read more…
iOS开发过程中需要处理大量分支判断代码,需要大量使用if、switch等进行分支处理。代码编写和查看都可能出现潜在问题,使用Objective-c语言的自身特点,可以通过以下转换,优化分支判断处理的代码写法。关键是可以一行代码搞定各种分支判断。实现代码简化。
使用宏定义将三目运算改为IIF函数运算,类似于EXCEL的IF公式
#if !defined(IIF)
#define IIF_IMPL(condition,true_,false_) (condition)?true_:false_
#define IIF(condition,true_,false_) IIF_IMPL(condition,true_,false_)
#endif |
#if !defined(IIF)
#define IIF_IMPL(condition,true_,false_) (condition)?true_:false_
#define IIF(condition,true_,false_) IIF_IMPL(condition,true_,false_)
#endif
Read more…
之前开发的代码中需要强制使用一些苹果的私有API,用了objc_msgSend方法进行调用,最近使用最新版本的Xcode进行编译时一致无法通过,后来通过度娘解决了这个问题,在此记录一下,修改方法也很简单,将ENABLE_STRICT_OBJC_MSGSEND的属性值设置为NO就OK,至少目前还没发现程序有什么问题。
参考地址
http://www.ruanman.net/swift/learn/10443.html
http://blog.sina.com.cn/s/blog_916e0cff0102vdnj.html
iOS在7.0以后,APP进入后台后会把当前APP的Window状态记录,并对Window进行截图操作,会在APP的Sandbox的Library\Caches\Snapshots\xxxx.xxx.xxx文件夹中增加以下几个文件。这有可能会造成用户敏感数据的泄密。
UIApplicationAutomaticSnapshotDefault-LandscapeLeft.png
UIApplicationAutomaticSnapshotDefault-LandscapeRight.png
[email protected]
[email protected]
Read more…
高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法。
以下实现代码中分别为NSData和NSString增加了一个Category。使用时直接调用即可。
需要注意的是,AES并不能作为HASH算法,加密并解密后的结果,并不一定与原文相同,使用时请注意进行结果验算。例如解密原文的长度,格式规则等。
NG实例
原文:170987350
密码:170
Read more…
之前在博文中实现的SHA1的安全性已经满足不了用户需求,今天把SHA224/SHA256/SHA384/SHA512的实现一并附上。
SHA即Secure Hash Algorithm(安全散列算法)有多种不同位数的实现,常见的有SHA224/SHA256/SHA384/SHA512等
SHA224:
- (NSString*) sha224
{
const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:self.length];
uint8_t digest[CC_SHA224_DIGEST_LENGTH];
CC_SHA224(data.bytes, data.length, digest);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA224_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA224_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return output;
} |
- (NSString*) sha224
{
const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:self.length];
uint8_t digest[CC_SHA224_DIGEST_LENGTH];
CC_SHA224(data.bytes, data.length, digest);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA224_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA224_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return output;
}
Read more…
Recent Comments