ios string to block

假设有一个方法的字符串
testinvokeBlock 和 类名 TestUtil

如何转换成block调用呢

1
2
3
4
5
NSString *str = @"testinvokeBlock";
Class cls = NSClassFromString(@"TestUtil");
SEL sel = NSSelectorFromString(str);
id(*blk)(id,sel) = (void *)objc_msgSend;
void(^)(void)result = blk(cls,sel);

result为最后的block.

注释和共享

npm经验

前提条件:
homebrew已安装

  • brew upgrade node

  • usr/local/Cellar/node/7.2.1/bin/node

  • usr/local/Cellar/node/7.2.1/libexec/npm/bin/npm

  • cd 到 usr/local/bin ,执行 ln -s usr/local/Cellar/node/7.2.1/bin/node node

  • 执行 ln -s usr/local/Cellar/node/7.2.1/libexec/npm/bin/npm npm

  • node -v

  • npm -v

  • 搞定

注释和共享

1
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
1
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options;
1
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
1
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

注释和共享

Chisel笔记

title

安装chisel:

  • 1.brew install chisel
  • 2.中间会遇到一些usr/local文件夹下面的访问权限问题,只需要根据提示,都可解决
  • 3.最后link一步解决办法:sudo chown -R whoami:admin /usr/local/opt
阅读全文

LLDB笔记

发布在 cate1, cate2

title

Expression 是lldb调试命令中最重要的命令

  • 1.打印内容
    expression -o – <=> po(po 是 expression -o – 的别名)
    expression ==> e
阅读全文

android_vs_ios

1.如何在main方法之前执行某段代码:
android:static代码块
ios:+(void)load;

2.多态性实现
android: interface(接口),继承,加上重写方法
ios:protocol(协议),继承,加上重写方法

3.判断某个实例所属的class类型
android:isinstanceof
ios: iskindof

4.数组 有序存放数组
android: arraylist,线程不安全,底层实现是数组,效率很高
vecoter,线程安全,底层是数组,效率低
ios:NSMutableArray,线程不安全,底层实现是数组+循环buffer,效率很高

5.set 存放唯一值
android:set,hashset
ios:NSSet,NSmutableSet

6.键值对,字典, key都是唯一的。遍历起来ios感觉更方便

android:map,hashmap,需要先把key通过 keyset()方法取到一个set中 再通过iterator(迭代器)来取对应value
ios:NSMutableDictinory, 直接通过方法 allkeys, allvalues 获取所有的key或者value

注释和共享

##app 冷启动 打开方式:##
XcodeEdit scheme -> Run -> Auguments 将环境变量 DYLD_PRINT_STATISTICS 设为 1。

1
2
3
4
5
6
7
8
Total pre-main time:  74.37 milliseconds (100.0%)   
dylib loading time: 41.05 milliseconds (55.2%)
rebase/binding time: 8.10 milliseconds (10.9%)
ObjC setup time: 9.87 milliseconds (13.2%)
initializer time: 15.23 milliseconds (20.4%)
slowest intializers :
libSystem.B.dylib : 6.58 milliseconds (8.8%)
libBacktraceRecording.dylib : 6.27 milliseconds (8.4%)
  • dylib loading time :动态库加载时间
  • rebase/binding time :工程中的class,functions,category数量会影响这个时间
  • ObjC setup time :注册class selectors category
  • initializer time :+load方法
  • libSystem.B.dylib :系统库加载时间
  • libBacktraceRecording.dylib :不知道是什么

注释和共享

running pig

running pig


IOS Developer


nanjing