- 浏览: 582067 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
JYY282:
[i][/i]
Ecshop与Shopex的比较 -
qq247890212:
我也遇见这问题了,真诡异。重新下载个猫换了就好了。 太浪费时间 ...
诡异:ClassNotFoundException: org.springframework.web.filter.CharacterEncoding
From: http://blog.csdn.net/remote_roamer/article/details/7107320
使用NSLog的一个风险是:它的运行会占用时间和设备资源。
简单而粗暴的解决方案是:在release前,将所有的NSLog注释掉。简单有效,但副作用是:下次你要调试时,又得将NSLog一个个取消注释。
以release模式编译的程序不会用NSLog输出,而以debug模式编译的程序将执行NSLog的全部功能。
解决步骤:
- 修改<AppName>-Prefix.pch ,增加以下的宏代码
[cpp] view plaincopy
- #ifdef DEBUG
- # define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函数名:%s]\n" "[行号:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);
- #else
- # define DLog(...);
- #endif
- 在程序中使用DLog来替换原来的NSLog
[cpp] view plaincopy
- DLog(@"当前程序目录是:%@", [self applicationDocumentsDirectory ]);
- 修改项目的配置,使得在debug编译的时候,编译DLog的宏,产生详细的日志信息,而release的时候,不产生任何控制台输出
在Other Linker Flags 中,在debug的时候,加入编译属性 -DEBUG
- 这样控制台会显示这样的日志信息
[cpp] view plaincopy
- 2011-12-27 22:23:53.303 IManager[5449:b603] [文件名:/Users/roamer/Project/ÂõΩÊ≥∞ÂêõÂÆâ/Ëꕉ∏öÈÉ®ÁÆ°ÁêÜiphone/IManager/IManager/AppDelegate.m]
- [函数名:-[AppDelegate application:didFinishLaunchingWithOptions:]]
- [行号:37]
- 当前程序目录是:/Users/roamer/Library/Application Support/iPhone Simulator/4.3.2/Applications/6B0E7B08-5528-468A-B728-0C4580805368/Documents
补充:
1) __VA_ARGS__ 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错, 你可以试试。
2) __FILE__ 宏在预编译时会替换成当前的源文件名
3) __LINE__宏在预编译时会替换成当前的行号
4) __FUNCTION__宏在预编译时会替换成当前的函数名称
发表评论
-
Objective-C 与 C++ 的异同
2013-04-02 12:03 1401http://www.cnblogs.com/y041039 ... -
Cocos2D-X是全球知名的开源跨平台手机游戏引擎
2013-01-22 10:05 2757http://www.oschina.net/p/cocos ... -
iOS Keyboard 键盘高度变化 自适应
2013-01-15 15:43 3253[[NSNotificationCenter default ... -
iOS使用自定义字体
2012-11-27 12:11 12145From: http://blog.csdn.net/csy1 ... -
4 款类似 Facebook/Path 切换效果的 iOS 组件
2012-11-27 12:03 2200From: http://blog.csdn.net/lia ... -
Path 2.0的UI界面设计详细介绍
2012-11-27 11:56 1472如Path的创始人Dave Morin ... -
史上最全的App Store邮箱列表
2012-11-27 11:51 1272From: http://roybaby.blog.51cto ... -
iOS从info.plist 获取项目的名称及版本号
2012-11-16 10:54 1675From: http://blog.sina.com.cn/s ... -
MapKit annotation drag and drop with callout info update
2012-10-13 10:38 2410http://hollowout.blogspot ... -
NSArray 或NSDictionary 调用writeToFile方法失败原因
2012-08-31 10:03 4489NSArray 或NSDictionary 调用writeTo ... -
如何让IOS应用从容地崩溃
2012-08-30 15:25 1621From: http://www.cocoachina.com ... -
iOS中判断设备系统版本
2012-08-29 17:17 31716在iOS开发中,经常要考虑系统的向下兼容,如果使用 ... -
iOS 汉字转拼音
2012-08-21 16:42 1471From: http://www.cnblogs.com/v2 ... -
iOS模拟器截图工具
2012-08-17 16:35 1663From: http://magicalboy.com/ios ... -
XCode下的iOS单元测试
2012-08-10 17:47 1171From: http://mobile.51cto.com/ ... -
AFNetworking
2012-08-08 10:54 4655AFNetworking on github: https:/ ... -
Wrapping Conventions
2012-08-01 15:54 826Wrapping Conventions ... -
Core Animation如何使显式动画结束时的值直接作用Layer
2012-08-01 14:51 3799(1)使用隐式动画会直接改变layer的属性值,如: ima ... -
How To Debug Memory Leaks with XCode and Instruments Tutoria
2012-07-31 16:30 1059From: http://www.raywenderlich. ... -
Using Properties in Objective-C Tutorial
2012-07-31 16:27 932From: http://www.raywenderlich. ...
相关推荐
在iOS开发中,有时我们需要获取iPhone设备的硬件版本和系统信息来实现特定的功能或为了调试目的。本示例代码“GetIOSInfoTest”提供了一种方法来获取这些关键信息。以下将详细介绍如何通过Objective-C编程语言来实现...
在iOS中,可以使用Objective-C或Swift来实现工厂方法。以下是一个基本的Objective-C实现: ```objc // 产品协议 @protocol ProductProtocol - (void)execute; @end // 具体产品类 @interface ConcreteProductA : ...
代码中使用`NSLog`打印错误信息,这是简单的调试手段。在实际开发中,可能需要更完善的错误处理机制,比如使用`NSAssert`进行断言,或者抛出异常,以便于追踪和修复问题。 7. **内存管理**: 在SQLite操作中,`...
iOS端 获取设备信息的简单封装 -直接拖到工程中使用 Example Code: 设备型号: NSString *modelSimple = [YQDeviceInfo getDeviceNameWithDetail:NO]; // "iPhone 7" NSLog(@"%@",modelSimple); NSString *...
4. **操作数据库**:iOS应用中通常使用`FMDB`这样的第三方库,它是SQLite3的Objective-C封装,提供了更友好的API来执行SQL命令。例如,使用`FMDB`插入一条记录: ```objc [db executeUpdate:@"INSERT INTO Users ...
内有demo ipad版本,iPhone可能存在适配问题。 另附有封装好的文件(地区选择) 使用方法: 直接将文件拖入项目。 调用方法: CKAddressChooseView *ck = [[CKAddressChooseView alloc]init]; ck.frame = ...
Objective-C 中使用 `NSArray` 和 `NSMutableArray` 类来表示不可变和可变数组。数组可以方便地存储和访问一组数据。 通过以上知识点的学习,初学者可以逐步掌握 Xcode 和 Objective-C 的基本使用方法,为进一步...
本教程将详细介绍如何在Objective-C中使用SOAP请求与WSDL服务进行交互,特别适用于iPhone应用开发。 首先,我们需要准备一个WSDL2OBJC工具,这是一个开源项目,它能够根据WSDL文件自动生成Objective-C客户端代码。...
你可以直接在Objective-C或Swift项目中使用。 2. **创建数据库**: 使用`sqlite3_open()`函数打开或创建数据库文件。例如: ```objc sqlite3 *database; if (sqlite3_open([databasePath UTF8String], &database)...
下面我们将深入探讨如何在iPhone应用中使用SQLite,并通过代码示例来理解其工作原理。 1. **SQLite简介** SQLite是一种关系型数据库管理系统,支持SQL标准,具有事务处理、备份、恢复和多线程等功能。在iOS应用中...
在iOS中,我们通常通过C语言的SQLite3 API来与数据库交互。要使用SQLite3,需要在项目中导入sqlite3库。 1. **打开或创建数据库** 在iOS中,SQLite数据库文件通常存放在应用程序的沙盒目录下。可以使用`...
在iPhone开发中,首要了解的是苹果公司选择Objective-C作为其原生开发语言。Objective-C是在C语言的基础上扩展的,增加了面向对象编程(OOP)的功能。它的核心仍然是C语言,但具备了像Java一样的垃圾回收机制,不过...
在iOS开发过程中,经常会遇到需要将一些通用的功能或者模块封装成库供其他项目使用的情况。这种库通常被称为静态库或动态库。静态库(.a文件)是一种常见的形式,它可以将多个源文件(.m文件)封装起来,并通过相应的...
- **控制台打印**:OC使用`NSLog`函数替代C语言中的`printf`来输出信息。 3. **常用数据类型**: - **整型**:`NSInteger` - **布尔类型**:`BOOL` - **结构体**:`NSRange` - **字符串**:`NSString` 4. **...
Objective-C是一种面向对象的编程语言,它在Apple的Mac OS X和iOS操作系统中广泛使用,是开发iPhone、iPad等Apple设备应用的主要语言。对于初学者来说,了解Objective-C的基础概念和编程模式至关重要。 首先,我们...
- **知识点解释:** 封装指的是将对象的状态信息隐藏在对象内部,对外只公开有限的接口供外部访问;继承是指类之间的一种关系,一个类可以从另一个类那里继承属性和方法;多态是指同一个操作作用于不同的对象,可以有...
它们可以捕获外部变量的状态,并在不同的上下文中使用。块在实现异步操作和回调时非常有用。 - **垃圾回收(Garbage Collection,GC)**:虽然 GC 在 Objective-C 2.0 中是可选的,但它提供了一种自动管理内存的方式...
Objective-C 2.0引入了对垃圾回收的支持,虽然iOS平台后来转向了自动引用计数(ARC),但在某些旧系统中仍然可以使用。 #### 三、Objective-C语法基础 **1. 导入框架** Objective-C使用`#import`指令来导入其他...
本章节主要介绍了iPhone应用编程中的Interface Builder工具以及Objective-C的一些基础类库(Foundation Classes)。Interface Builder是Xcode集成开发环境的一部分,用于创建iOS应用程序的用户界面。此外,还深入...