- 浏览: 305661 次
文章分类
- 全部博客 (291)
- hibernate (1)
- Java温故知新 (2)
- Ajax原理 (1)
- Spring嵌套事务 (1)
- asp (1)
- sax (1)
- javascript (2)
- 心灵鸡汤 (1)
- 其他 (1)
- 数据库 (1)
- android (2)
- Algorithm (1)
- 算法 (1)
- J2SE基础提高 (1)
- Java ee (1)
- VC++ (1)
- java (3)
- IOS开发 (1)
- Winform (1)
- ACM_博弈 (1)
- spring (1)
- 【RDBMS】 (1)
- Magento 基础应用 (1)
- 背包 (1)
- ACM-----哈希/set/map (1)
- Python (1)
- Java程序设计基础 (1)
- 电脑/网络/协议小知识 (1)
- 教程 (1)
- MVC系列 (1)
- Unix & Linux (1)
- 【SSH】 (1)
- 数据结构 (1)
- java学习笔记 (1)
- bfs (1)
- IOS (2)
- 心态 (1)
- 电脑网络 (1)
- linux、unix (1)
- 【Android开发学习之路】 (1)
- Library (1)
- 技术讨论 (1)
- JAVA技术 (1)
- 06_数据库 (1)
- oracle 体系结构 (1)
最新评论
-
finallygo:
Sorted Set 实现的有点问题吧,怎么没有传入score ...
Java版的Redis -
laoqian9527:
楼主你的客户群都淘汰了2003吗?
poi3.8操作word,动态添加文字 -
w156445045:
这是用的浏览器右键的那个导出的功能嘛?
jsp页面导出成word文件 -
youc3576:
来个完整版的么 哥们
hibernate - 多对多关联关系 -
lilai:
...
Ajax原理
递归, autorelease对象如何避免内存泄漏????
-(NSString *) getStuJsonString : (StuNode *) stuNode{
NSString *nodeJsonString = [[NSString alloc] initWithString:@""];
{
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString: @"{"]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"visible\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.Visible]]] autorelease];
//othters
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"title\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.title]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"courseName\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.courseName]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"href\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.href]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"sid\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.sid]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"rid\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.rid]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"courseID\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.courseID]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"studentID\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.studentID]]] autorelease];
//rtdata
if(stuNode.RTData == nil || stuNode.RTData == (id)[NSNull null]){
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"\"RTData\":null,"]] autorelease];
} else {
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"\"RTData\":{"]] autorelease];
//core
NSMutableArray *arr_core = stuNode.RTData.core;
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"\"core\":["]] autorelease];
for(RTDataNodeCoreItem* coreItem in arr_core) {
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"{"]] autorelease];
if([coreItem.Itemid compare:@"score"] != NSOrderedSame) {
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"value\":\"%@\",", [self FormatNillOrNilOrnull:coreItem.value]]] autorelease];
} else {
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"\"value\":["]] autorelease];
for(RTDataNodeCoreItem *score_core_item in coreItem.scoreValue){
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"{"]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"value\":\"%@\",", [self FormatNillOrNilOrnull:score_core_item.value]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"id\":\"%@\",", [self FormatNillOrNilOrnull:score_core_item.Itemid]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"type\":\"%@\",", [self FormatNillOrNilOrnull:score_core_item.type]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"toJSONString\":\"%@\",", [self FormatNillOrNilOrnull:score_core_item.toJSONString]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"parseJSON\":\"%@\",", [self FormatNillOrNilOrnull:score_core_item.parseJSON]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"io\":\"%@\"", [self FormatNillOrNilOrnull:score_core_item.io]]] autorelease];
if(score_core_item == [coreItem.scoreValue lastObject]){
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"}"]] autorelease];
} else {
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"},"]] autorelease];
}
}
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"],"]] autorelease];
}
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"id\":\"%@\",", [self FormatNillOrNilOrnull:coreItem.Itemid]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"type\":\"%@\",", [self FormatNillOrNilOrnull:coreItem.type]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"toJSONString\":\"%@\",", [self FormatNillOrNilOrnull:coreItem.toJSONString]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"parseJSON\":\"%@\",", [self FormatNillOrNilOrnull:coreItem.parseJSON]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"io\":\"%@\"", [self FormatNillOrNilOrnull:coreItem.io]]] autorelease];
if(coreItem == [arr_core lastObject]){
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"}"]] autorelease];
} else {
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"},"]] autorelease];
}
}
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"],"]] autorelease];
//comments
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"comments\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.RTData.comments]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"launchData\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.RTData.launchData]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"suspendData\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.RTData.suspendData]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"scoID\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.RTData.scoID]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"scoType\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.RTData.scoType]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"toJSONString\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.RTData.toJSONString]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"parseJSON\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.RTData.parseJSON]]] autorelease];
//cmiParL1
NSMutableArray *arr_cmiParL1 = stuNode.RTData.cmiParL1;
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"\"cmiParL1\":["]] autorelease];
for(NSString *obj_cmiParL1 in arr_cmiParL1) {
if(obj_cmiParL1 == [arr_cmiParL1 lastObject]){
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"%@\"", obj_cmiParL1]] autorelease];
}else {
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"%@\",", obj_cmiParL1]] autorelease];
}
}
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"],"]] autorelease];
//cmiParL2
NSMutableArray *arr_cmiParL2 = stuNode.RTData.cmiParL2;
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"\"cmiParL2\":["]] autorelease];
for(NSString *obj_cmiParL2 in arr_cmiParL2) {
if(obj_cmiParL2 == [arr_cmiParL2 lastObject]){
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"%@\"", obj_cmiParL2]] autorelease];
}else {
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"%@\",", obj_cmiParL2]] autorelease];
}
}
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"],"]] autorelease];
//launch_data
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"launch_data\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.RTData.launch_data]]] autorelease];
//student_data
NSMutableArray *arr_student_data = stuNode.RTData.student_data;
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"\"student_data\":["]] autorelease];
for(RTDataNodeCoreItem* coreItem in arr_student_data) {
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"{"]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"value\":\"%@\",", [self FormatNillOrNilOrnull:coreItem.value]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"id\":\"%@\",", [self FormatNillOrNilOrnull:coreItem.Itemid]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"type\":\"%@\",", [self FormatNillOrNilOrnull:coreItem.type]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"toJSONString\":\"%@\",", [self FormatNillOrNilOrnull:coreItem.toJSONString]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"parseJSON\":\"%@\",", [self FormatNillOrNilOrnull:coreItem.parseJSON]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"io\":\"%@\"", [self FormatNillOrNilOrnull:coreItem.io]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"}"]] autorelease];
}
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"],"]] autorelease];
//suspend_data
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"suspend_data\":\"%@\"", [self FormatNillOrNilOrnull:stuNode.RTData.suspend_data]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"},"]] autorelease];
}
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"scoType\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.scoType]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"toJSONString\":\"%@\",", [self FormatNillOrNilOrnull:stuNode.toJSONString]]] autorelease];
//items
NSLog(@"item:%@", stuNode.title);
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"\"items\":["]] autorelease];
if(stuNode.items != nil) {
NSMutableArray *itemArray = stuNode.items;
for(StuNode *item in itemArray){
if(item == [itemArray lastObject]){
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
nodeJsonString =[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"%@", [self getStuJsonString:item]]] ;
[pool drain];
}else {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
nodeJsonString = [[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"%@", [self getStuJsonString:item]]];
[pool drain];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@","]] autorelease];
}
}
}
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"],"]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingFormat:@"\"parseJSON\":\"%@\"", [self FormatNillOrNilOrnull:stuNode.parseJSON]]] autorelease];
nodeJsonString = [[[NSString alloc] initWithString:[nodeJsonString stringByAppendingString:@"}"]] autorelease];
}
return [nodeJsonString autorelease]; ;
}
相关推荐
IOS 常见内存泄漏以及解决方案 整理了几个内存泄漏的例子,由于转载地址已经找不到了,在这里就不一一列出来了。 1 OC和CF转化出现的内存警告 CFStringRef cfString = CFURLCreateStringByAddingPercentEscapes...
这有助于我们在实际项目中正确地管理内存,避免出现内存泄漏或意外的副作用。 总之,理解深浅拷贝、`retain`和`retainCount`对于iOS开发来说是至关重要的。通过实践和测试,我们可以更好地掌握这些概念,编写出高效...
### IOS 内存管理核心知识点解析 #### 一、对象所有权机制 在Objective-C中,对象的生命周期由其引用计数决定,这是内存管理的核心。对象的“拥有”概念至关重要,意味着一个对象至少需要有一个拥有者才能保持其...
循环引用是导致内存泄漏的主要原因之一,通常需要通过以下方式解决: 1. 使用`weak`或`unsafe_unretained`引用代替`strong`引用,以打破循环引用。在ARC下,推荐使用`weak`,因为当对象释放时,`weak`引用会自动设为...
**iOS应用开发中的ARC内存管理方式详解** **一、ARC的引入与启用** ARC(Automatic Reference Counting),自iOS 5起成为Objective-C的一个重要特性,它极大地简化了内存管理,由编译器自动处理对象的引用计数,...
**ARC(Automatic Reference Counting)**是一种自动内存管理机制,它首次出现在iOS 5中,旨在帮助开发者解决内存管理的问题。在ARC出现之前,开发者需要手动进行retain和release操作来管理内存,这很容易导致内存...
- **ARC的优势**:ARC的主要优势在于减少了内存管理的负担,降低了内存泄漏的风险,并提高了代码的可读性和维护性。由于编译器负责内存管理,开发者可以更加专注于应用程序的逻辑实现。 #### 指针与对象的生命 - *...
- **内存管理**:理解ARC(Automatic Reference Counting)机制,防止内存泄漏。 - **Foundation框架**:学习NSArray、NSDictionary、NSString等基本数据结构的使用。 2. **一步一步学习iOS5编程第二版.pdf**: ...
- **局限性**:虽然ARC可以极大减少内存泄漏的风险,但它并不能解决所有内存管理问题,例如block引起的循环引用、Core Foundation对象的不当管理等问题。 #### 2. 合理使用reuseIdentifier - **背景介绍**:在...
在iOS开发中,NSString是Objective-C中用于处理文本数据的核心类,它经常需要与各种其他类型的数据进行转换,如NSArray、NSDate、int和C字符串(CString)。以下是一些关于NSString转换的重要技巧和方法: 1. **...
ARC的引入极大地简化了内存管理过程,降低了内存泄漏的风险。 2. 多线程编程 iOS中的多线程编程通常通过Grand Central Dispatch(GCD)或者NSOperation来实现。多线程是优化应用性能、提高用户体验的关键技术。...
3. **内存管理**:GTMBase64库考虑到了内存管理问题,它会自动处理内存分配和释放,避免内存泄漏。这使得开发者在使用过程中更加省心,不必过多关注内存管理细节。 4. **线程安全**:GTMBase64库设计时考虑到了多...
内存管理规范主要涉及对对象的内存分配和释放进行规范,比如使用注释方式来记录延迟调用的范围,或者对类型设计进行限制,以避免内存泄漏。 代码组织规范则涉及到项目的代码架构,比如建议将ViewController的代码...
本文将详细解释 iOS 笔试题011 中的知识点,涵盖#import、@class、属性、setter 方法、内存管理等方面。 一、#import、@class 的区别 #import 和 @class 都可以用来包含某个文件的内容,但是它们之间有一些关键的...
- **C语言框架**:调用底层C语言框架时,确保正确释放变量以避免内存泄露。 4. **遍历数组时修改数组**:在遍历`NSMutableArray`时对其进行修改,如添加、删除元素,会导致崩溃。例如: ```swift NSMutableArray...
- **问题分析**:上述代码中创建的多个 `NSString` 对象都没有显式释放,这会导致内存泄漏。 - **解决方法**:使用 `NSAutoreleasePool` 来管理临时对象的生命周期,确保每个循环内部创建的对象能够及时释放。 ``...
该框架的核心特点是采用自动引用计数(Automatic Reference Counting,简称ARC),这是一种内存管理技术,可以自动处理Objective-C对象的生命周期,避免了手动管理内存的繁琐和可能导致的内存泄漏问题。 在iOS开发...
- 另外,可以使用`xmlFree`函数及时释放不再使用的XML对象,避免内存泄漏。 7. **错误处理** - libxml提供了丰富的错误处理机制,通过`xmlGetLastError`获取错误信息,以便调试和报告问题。 8. **安全考虑** - ...
通常使用`weak`关键字,以防止内存泄漏和循环引用的发生。 8. **`nonatomic`与`atomic`的区别:** - `nonatomic`表示非原子性操作,即不会保证线程安全,性能更高。 - `atomic`则保证了线程安全,但在多线程环境...