nslog

IOS 中的 AppDelegate.m/h

好久不见. 提交于 2020-02-29 14:28:42
IOS 中的 AppDelegate.m/h 文件是很重要的,因为它是对 Application 的整个生命周期进行管理的。 先明白,每个iPhone应用程序都有一个UIApplication,UIApplication是iPhone应用程序的开始并且负责初始化并显 示 UIWindow,并负责加载应用程序的第一个UIView到UIWindow窗体中。UIApplication的另一个任务是帮助管理应用程序的 生命 周期,而UIApplication通过一个名字为UIApplicationDelegate的代理类来履行这个任务。尽管 UIApplication 会负责接收事件,而UIApplicationDelegate则决定应用程序如何去响应这些事 件,UIApplicationDelegate可以处理 的事件包括应用程序的生命周期事件(比如程序启动和关闭)、系统事件(比如来电、记事项警 告),本文会介绍如何加载应用程序的UIView到 UIWindow以及如何利用UIApplicationDelegate处理系统事件。 通 常对于UIApplication读者是没必要修改它的,只需要知道UIApplication接收系统事件即可,而如何编写代码来处理这些系统事件 则 是程序员的工作。处理系统事件需要编写一个继承自UIApplicationDelegate接口的类,而

iOS NSLog去掉时间戳及其他输出样式

百般思念 提交于 2020-02-29 08:18:01
1.一般项目中我的NSLog会在Prefix.pch文件添加如下代码,已保证在非调试状态下NSLog不工作 #ifdef DEBUG #define NSLog(...) NSLog(__VA_ARGS__) #else #define NSLog(...) #endif 2.在项目中如果没做任何处理的话会输出如下信息,前面有一个时间戳 2014 - 11 - 07 08 : 25 : 40.885 zcsy [ 673 : 8937 ] cell 的高度 258.684998 我们修改下宏如下: #ifdef DEBUG #define NSLog(FORMAT, ...) fprintf(stderr,"%s\n",[[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]); #else #define NSLog(...) #endif 经过上面的修改我们可以输出 纯净的内容如下: cell 的高度 258.684998 我们可以用更好的版本我推荐用这个打印我们的日志: #ifdef DEBUG #define NSLog(FORMAT, ...) fprintf(stderr,"%s:%d\t%s\n",[[[NSString stringWithUTF8String:__FILE__]

一些不常用但有用有意思的宏定义

懵懂的女人 提交于 2020-02-29 07:53:34
1. __deprecated_msg __deprecated_msg("这是一个废弃的方法") 2. NS_REQUIRES_SUPER NS_REQUIRES_SUPER , 在自定义的方法后面加上这个, 其子类在重写这个方法时候, 必须调用父类的这个方法, 不然会警告或者直接报错. 3. Debug模式使用NSLog输出, Release模式禁用NSLog #ifdef DEBUG #define NSLog(...) NSLog(__VA_ARGS__) #else #define NSLog(...) #endif 4. 断言NSAssert()使用 NSAssert(script, @"script is nil"); 这句意思是说, 如果script条件语句为NO, 则程序终止,打印后面的话. 断言在Debug模式下会导致程序终止并提醒, 在Release模式下不会终止也不会提示. #define NSAssert(condition, desc, ...) 来源: oschina 链接: https://my.oschina.net/u/2501614/blog/649554

UITableView的简单的使用

风流意气都作罢 提交于 2020-02-29 06:00:24
@interface TableListViewController : UITableViewController @end @implementation TableListViewController //表格可以以分段或者以单个列表的形式显示其数据。对于简单的表格,返回1,表示整个表格应该作为一个列表显示。在分段列表中,返回2及以上的值。 - (NSInteger)numberOfSectionsInTableView:(UITableView *)aTableView { return 1; } //第二个调用,此方法返回每个分段的行数,处理简单列表时,返回整个表格的行数。 - (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section { NSLog(@"[UIFont familyNames].count,%d",[UIFont familyNames].count); return [UIFont familyNames].count; } //第三个调用,返回某一个item - (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *

iOS开发debug跟release版本log屏蔽方法

我们两清 提交于 2020-02-28 11:01:12
在开发过程中一般会用到 NSLog(<#NSString *format, ...#>)来获得具体的信息。 但当我们发布app时,一步一步的去找 NSLog(<#NSString *format, ...#>),并屏蔽掉,这样比较浪费时间还很累。我们可以采用预编译的方式来简化这个问题。 1.在***-Prefix.pch里面添加 #ifdef DEBUG # define DLog(...) NSLog(__VA_ARGS__) #else # define DLog(...) /* */ #endif #define ALog(...) NSLog(__VA_ARGS__) 2.进入Xcode 4,选择菜单“Product”->“Manage Schemes”,选择一个项目,点击“Edit”,Bulid Configuration 附: 检查DEBUG标志是否正确定义,xcode一般会在debug运行配置项里面已经定义号了DEBUG标志,如果没定义我们就自己写上,以我的xcode 4 为例,如下图:   找到PreProcessor Macros 这个属性,对于Debug配置我们给他写上DEBUG,而在Release配置中把它留空。 这样我们刚才那段预处理命令就可以根据这个标志来判断我们编译的时调试版本还是发布版本,从而控制NSLog的输出。 (因为xcode 4 会把debug

iPhone开发之NSLog使用技巧

霸气de小男生 提交于 2020-02-27 04:37:23
// 以release模式编译的程序不会用NSLog输出,而以debug模式编译的程序将执行NSLog的全部功能。 #ifndef __OPTIMIZE__ # define NSLog(...) NSLog(__VA_ARGS__) #else # define NSLog(...) #endif 或 #ifdef __OPTIMIZE__ #define NSLog(...) #endif 这个代码的魔术在于:release模式通常会定义 __OPTIMIZE__,debug模式不会。 将这段代码放在头文件当中,就可以放心的使用NSLog了! 把这些代码放到*Prefix.pch中最省事。可以把这段宏定义放到一个头文件中,再把这个头文件包含到*Prefix.pch中。 原文: http://lichen1985.com/blog/?p=251 来源: https://www.cnblogs.com/ios-wmm/archive/2012/08/24/2654112.html

iOS-NSLog发布时取消打印日志

拥有回忆 提交于 2020-02-26 12:41:41
1 选择工程的Target -> Build Settings -> Preprocessor Macros. 如图,默认 Debug项,是“DEBUG=1”. 2 在程序中设置全局宏定义 在程序的 ApplicationName-Prefix.pch 文件中,加入如下,很简单 ? 1 2 3 4 5 #ifdef DEBUG_MODE #define DLog( s, ... ) NSLog( @ "<%p %@:(%d)> %@" , self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] ) # else #define DLog( s, ... ) #endif 3 这样就设置好了,测试 在任意ViewController.m中写入 ? 1 DLog(@ "1234" ); 结果: ? 1 2012 - 07 - 25 17 : 09 : 54.448 xxxx[ 7094 : 707 ] < 0x28f790 ViewController.m:( 64 )> 1234 这样发布的时候DLog就不会有输出了。  在Objective-c开发程序的时候,有专门的日志操作类NSLog

iOS开发debug跟release版本log屏蔽方法

柔情痞子 提交于 2020-02-25 12:18:17
简单介绍以下几个宏: 1) __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉,否则会编译出错。 2) __FILE__ 宏在预编译时会替换成当前的源文件名 3) __LINE__宏在预编译时会替换成当前的行号 4) __FUNCTION__宏在预编译时会替换成当前的函数名称 1. 在***-Prefix.pch里面添加, 重新定义系统的NSLog,__OPTIMIZE__ 是release 默认会加的宏 #ifndef __OPTIMIZE__ #define NSLog(...) NSLog(__VA_ARGS__) #else #define NSLog(...){} #endif 2.在***-Prefix.pch里面添加 ,直接自己写#define,当release版本的时候把#define 注释掉即可 #define IOS_DEBUG #ifdef IOS_DEBUG #define NSLog(...) NSLog(__VA_ARGS__) #endif 3.在***-Prefix.pch里面添加 #ifdef DEBUG # define DLog(format, ...) NSLog((@"

Xcode最好用的日志打印方法

混江龙づ霸主 提交于 2020-02-25 12:12:51
一般打印日志都是用的系统自带的 NSLog来打印的,假如项目做完了,要上线了,这些打印的日志就会很浪费性能,网上有很多的解决办法,我也是感觉网上的还是有点不方便,所以就自己又修改了一下,分享给大家。 网上的方法就是利用Debug状态和Release状态来控日志的输出,如果是Debug状态的话就输出日志(就是NSLog的东西会打印),如果是Release状态的话就不用输出日志(就是NSLog的东西不会打印。)所以上架的时候就需要调成Release就行了,就可以避免浪费打印日志,节省性能,提高效率。 其实精髓只是在pch(如果不知道什么是pch的话请看这个链接: http://www.cnblogs.com/BK-12345/p/6074087.html )里面写了一段代码就可以实现这个功能了,而我只是将这段代码优化了一下,感觉不错。 代码如下: //打印的日志 #ifdef DEBUG #define YZLog(...) \ NSLog(@"%@第%d行:%@\n",[[NSString stringWithFormat:@"%s",__FILE__] componentsSeparatedByString:@"/"][[[NSString stringWithFormat:@"%s",__FILE__] componentsSeparatedByString:@"/"]

IOS开发,添加控件(xcode9.1 Object-c)

你说的曾经没有我的故事 提交于 2020-02-19 04:09:07
添加文本与编辑框: UILabel * label = [ [ UILabel alloc ] initWithFrame : CGRectMake ( 20 , 20 , 200 , 40 ) ] ; label . backgroundColor = [ UIColor blueColor ] ; label . textColor = [ UIColor blackColor ] ; label . text = @ "Mylabel" ; [ label setFont : [ UIFont boldSystemFontOfSize : 14 ] ] ; [ self . view addSubview : label ] ; UITextField * textField = [ [ UITextField alloc ] initWithFrame : CGRectMake ( 20 , 70 , 260 , 30 ) ] ; textField . borderStyle = UITextBorderStyleRoundedRect ; textField . contentVerticalAlignment = UIControlContentVerticalAlignmentCenter ; [ textField setFont : [ UIFont