iConsole使用方法
2014-03-02 15:49
267 查看
转自:http://www.cocoachina.com/bbs/read.php?tid=132997
还记得上次微信的4.3.3版中三指向上滑就可以调出iConsole控制台吗?当时还是蛮好奇的。当时随便了解了一下,没有深入。最近项目给甲方测试。老是反馈说在他们的网络下崩溃,而我却无法重新bug。于是就想到了内置这个iconsole,看看他使用时的log。
我在github上下到了开源的iconsole源码和demo,很遗憾,github刚被我们伟大的伟大.长城封了,所以想看官方的demo的话,可以到这里下哦:<a href="http://download.csdn.net/detail/lp08011095/5021502">iconsole官方demo</a>。
然后跟着这个demo,我们也创建了一个测试工程。
首先:加入iConsole 和GTM 源码到工程中,如下图
然后,需要使用iConsoleWindow
这步<span style="color: #ff0000;">非常重要</span>哦。因为这个官方demo时间比较久了,使用的xcode也比较老。当时还有MainWindow.xib 他在这个xib中把window直接指定为iConsoleWindow类。iConsoleWindow类是定义在iconsole.m
中的UIWindow的子类。里面重新实现了sendEvent( )这个方法(这个方法的作用下面讨论)。一开始没注意到这点,一直无法在程序中调出debug节目,折腾我许久啊!!那么现在我们可以在AppDelegate.h中修改就可以了:首先加入头文件
#import "iConsole.h"
然后修改
@property (strong, nonatomic) iConsoleWindow *window;
//这是关键,必须使用iConsoleWindow
最后,就可以在需要的地方使用iconsole记录日志了。
我是在AppDelegate中加入iConsole的。先在h文件中加入iConsoleDelegate协议
@interface AppDelegate : UIResponder <UIApplicationDelegate,iConsoleDelegate>
然后在
didFinishLaunchingWithOptions中加入
[iConsole sharedConsole].delegate = self;]
[iConsole sharedConsole].logSubmissionEmail = @"apanlin@gmail.com";
然后还要实现协议中的方法:
这样最后只需要在需要的地方输出日志就好了
[iConsole info:@"测试log"];
详细的可以参考最后面的demo!
=============================
现在说说为什么一定要使用iConsoleWindow了。上面说到iConsoleWindow是UIWindow的子类,它覆盖了
- (void)sendEvent:(UIEvent *)event 方法。
而这个就涉及到了ios系统对事件的响应的问题了。
当用户发起一个事件,比如触摸屏幕或者晃动设备,系统产生一个事件,同时投递给UIApplication,而UIApplication则将这个事件传递给特定的UIWindow进行处理(正常情况都一个程序都只有一个UIWindow),然后由UIWindow将这个事件传递给特定的对象(即first
responder)并通过响应链进行处理。
而这个正是载iconsoleWindow中把响应事件截取,判断是不是3根指头同时向上,是的话就显示debug界面。
关于ios事件的响应和截取,可以参考这里。这也是通过这个demo学到的新知识!
如果需要我的测试demo的话,请从这里下载
更多0
还记得上次微信的4.3.3版中三指向上滑就可以调出iConsole控制台吗?当时还是蛮好奇的。当时随便了解了一下,没有深入。最近项目给甲方测试。老是反馈说在他们的网络下崩溃,而我却无法重新bug。于是就想到了内置这个iconsole,看看他使用时的log。
我在github上下到了开源的iconsole源码和demo,很遗憾,github刚被我们伟大的伟大.长城封了,所以想看官方的demo的话,可以到这里下哦:<a href="http://download.csdn.net/detail/lp08011095/5021502">iconsole官方demo</a>。
然后跟着这个demo,我们也创建了一个测试工程。
首先:加入iConsole 和GTM 源码到工程中,如下图
然后,需要使用iConsoleWindow
这步<span style="color: #ff0000;">非常重要</span>哦。因为这个官方demo时间比较久了,使用的xcode也比较老。当时还有MainWindow.xib 他在这个xib中把window直接指定为iConsoleWindow类。iConsoleWindow类是定义在iconsole.m
中的UIWindow的子类。里面重新实现了sendEvent( )这个方法(这个方法的作用下面讨论)。一开始没注意到这点,一直无法在程序中调出debug节目,折腾我许久啊!!那么现在我们可以在AppDelegate.h中修改就可以了:首先加入头文件
#import "iConsole.h"
然后修改
@property (strong, nonatomic) iConsoleWindow *window;
//这是关键,必须使用iConsoleWindow
最后,就可以在需要的地方使用iconsole记录日志了。
我是在AppDelegate中加入iConsole的。先在h文件中加入iConsoleDelegate协议
@interface AppDelegate : UIResponder <UIApplicationDelegate,iConsoleDelegate>
然后在
didFinishLaunchingWithOptions中加入
[iConsole sharedConsole].delegate = self;]
[iConsole sharedConsole].logSubmissionEmail = @"apanlin@gmail.com";
然后还要实现协议中的方法:
复制代码 - (void)handleConsoleCommand:(NSString *)command { if ([command isEqualToString:@"version"]) { [iConsole info:@"%@ version %@", [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"], [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]]; } else { [iConsole error:@"unrecognised command, try 'version' instead"]; } } |
[iConsole info:@"测试log"];
详细的可以参考最后面的demo!
=============================
现在说说为什么一定要使用iConsoleWindow了。上面说到iConsoleWindow是UIWindow的子类,它覆盖了
- (void)sendEvent:(UIEvent *)event 方法。
而这个就涉及到了ios系统对事件的响应的问题了。
当用户发起一个事件,比如触摸屏幕或者晃动设备,系统产生一个事件,同时投递给UIApplication,而UIApplication则将这个事件传递给特定的UIWindow进行处理(正常情况都一个程序都只有一个UIWindow),然后由UIWindow将这个事件传递给特定的对象(即first
responder)并通过响应链进行处理。
而这个正是载iconsoleWindow中把响应事件截取,判断是不是3根指头同时向上,是的话就显示debug界面。
关于ios事件的响应和截取,可以参考这里。这也是通过这个demo学到的新知识!
如果需要我的测试demo的话,请从这里下载
更多0
相关文章推荐
- iConsole使用方法
- H5场景动画 swiper Animate使用方法
- JS setInterval() 与 clearInterval() 方法的使用
- List 中的 list.contains(o)方法的使用
- Markdown编辑器使用方法
- proteus电路仿真软件使用方法
- 在IE8中使用建行企业网银的解决方法
- 使用WebLogic时控制台输出中文乱码解决方法
- python MethodType方法详解和使用--转载--有删改
- System.arraycopy方法的使用
- Linux防火墙iptables基本使用方法
- Android使用HttpClient方法和易错问题
- 生成libSVM的数据格式及使用方法
- Fragment和FragmentActivity的使用方法
- SpringMVC中使用@ResponseBody注解返回值,Ajax取得中文乱码解决方法
- iOS数据库的使用方法(FMDB)
- Laravel 5.3 使用内置的 Auth 组件实现多用户认证功能以及登陆才能访问后台的功能的一种实现方法
- 使用trace方法和trace属性记录Page目录中网页的执行情况
- 查看地图接口以及使用方法
- Jquery AutoComplete自动完成 的使用方法实例