2011-06-26 52 views
-2

我宣布了一个NSMutable数组并为其分配了一些值。NSMutableArray问题

.h 
NSMutableArray *imageDetailsFromCategory; 

@property (nonatomic, retain) NSMutableArray *imageDetailsFromCategory; 

.m 
@synthesise imageDetailsFromCategory 
在viewDidLoad中

imageDetailsFromCategory = [[NSMutableArray alloc]init]; 

//assigning object to Array..working fine.showing two images. 
imageDetailsFromCategory = [self getImageDetailsFromCategory:generatedString]; 

我有,现在解决的一个问题。我有一个问题,那就是我将这个数组传递给StaticCategoryWithMultiImagePopOver类。

StaticCategoryWithMultiImagePopOver *staticCategoryWithMultiImagePopOver = [[StaticCategoryWithMultiImagePopOver alloc] init]; 

[staticCategoryWithMultiImagePopOver setParentImageDetailsArray:imageDetailsFromCategory]; 
在StaticCategoryWithMultiImagePopOver.h

NSMutableArray *nsmResult; 
@property (nonatomic,retain)NSMutableArray *nsmResult; 

的.m

@synthesize nsmResult 

-(void)setParentImageDetailsArray:(NSMutableArray *)imageDetailsFromCategoryFromParent{ 
    nsmResult=[[NSMutableArray alloc] init]; 
    nsmResult=[imageDetailsFromCategoryFromParent retain]; 

    } 

传递的数组保持与每个索引处一些字符串变量类对象。

所以我通过代码收到此:

- (UITableViewCell *)tableView:(UITableView *)tableView15 cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 


    UITableViewCell *cell = [tableView15 dequeueReusableCellWithIdentifier:CellIdentifier]; 
    // if (cell == nil) { 
    // cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
    // } 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 
    NSFileManager *fileManager = [NSFileManager defaultManager];//create instance of NSFileManager 


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //create an array and store result of our search for the documents directory in it 


    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    SymbolTalkEntry *symbolTalkEntry = [[SymbolTalkEntry alloc]init]; 

    symbolTalkEntry =[nsmResult objectAtIndex:indexPath.row]; 

    NSString *imageNme = symbolTalkEntry.fileName; // *this line* 

上述行越来越错误。

阵列显示计数,但对象是出scope..cant的获取值...

任何一个可以告诉我,我怎么能访问它......可我知道是什么问题我...

的cellForRowAtIndexPath(其工作的罚款)

// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView15 cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 


    UITableViewCell *cell = [tableView15 dequeueReusableCellWithIdentifier:CellIdentifier]; 
    // if (cell == nil) { 
    // cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
    // } 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 
    NSFileManager *fileManager = [NSFileManager defaultManager];//create instance of NSFileManager 


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //create an array and store result of our search for the documents directory in it 


    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    SymbolTalkEntry *symbolTalkEntry = [[SymbolTalkEntry alloc]init]; 

    symbolTalkEntry =[nsmResult objectAtIndex:indexPath.row]; 

    NSString *imageNme = symbolTalkEntry.fileName; 

    [symbolTalkEntry release]; 
    //Display image from app bundle 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",imageNme]]; 

    cell.imageView.image= [UIImage imageWithContentsOfFile:path]; 
    return cell; 


} 

-(NSInteger)number 
+0

是StaticCategoryWithMultiImagePopOver您的表视图数据源吗?或者'cellForRowAtIndexPath'方法中的文件是什么? – jtbandes

+2

为什么你总是'alloc init'如果你打算指向另一个对象之后呢? –

+0

@jtbandes:是的...... – Christina

回答

3

nsmResult=[[NSMutableArray alloc] init]; 
nsmResult=[imageDetailsFromCategoryFromParent retain]; 

SymbolTalkEntry *symbolTalkEntry = [[SymbolTalkEntry alloc]init]; 
symbolTalkEntry =[nsmResult objectAtIndex:indexPath.row]; 

是内存泄漏。

关于你的问题:你的

symbolTalkEntry =[nsmResult objectAtIndex:indexPath.row]; 

获取对象似乎没有属性的文件名。

我认为你应该阅读一本关于Objective-C和Cocoa的好书。

0

其实这是在数组内的类的问题。

我改变了我的课,因为这:

#import <Foundation/Foundation.h> 


@interface SymbolTalkEntry : NSObject { 

int categoryId; 
NSString *runModeType; 
NSString *sceneCategory; 
NSString *fileName; 
int isDefault; 
int sortX; 
int pathId;// 0 for appbundle 1 for document directry 


} 
@property (nonatomic, retain)NSString *runModeType;; 
@property (nonatomic, retain)NSString *sceneCategory; 
@property (nonatomic, retain)NSString *fileName; 

-(id)init; 

-(void) setCategoryId:(int) ctgId; 
-(int)categoryId; 

-(void) setRunModeType:(NSString *)rmType; 
-(NSString *) runModeType; 

-(void) setSceneCategory:(NSString *)scCategory; 
-(NSString *) sceneCategory; 

-(void) setFileName:(NSString *)Flname; 
-(NSString *) fileName; 

-(void) setIsDefault:(int) isDeft; 
-(int)isDefault; 

-(void) setSortX:(int) srtX; 
-(int)sortX; 

-(void) setPathId:(int) srtX; 
-(int)pathId; 
@end 
[5:05:00 AM] Shamsudheen TK: #import "SymbolTalkEntry.h" 


@implementation SymbolTalkEntry 
@synthesize runModeType; 
@synthesize sceneCategory; 
@synthesize fileName; 


-(id) init{ 
categoryId = 0; 
runModeType = @""; 
sceneCategory [email protected]""; 
fileName = @""; 
isDefault = 0; 
sortX =0; 
pathId =0; 
return self; 
} 
-(void) setCategoryId:(int) ctgId{ 
categoryId = ctgId; 
} 
-(int)categoryId{ 
return categoryId; 
} 

-(void) setRunModeType:(NSString *)rmType{ 

if (runModeType != rmType) { 
    [runModeType release ]; 
    runModeType = [rmType retain]; 
} 
} 
-(NSString *) runModeType{ 
return runModeType; 
} 

-(void) setSceneCategory:(NSString *)scCategory{ 

if (sceneCategory != scCategory) { 
    [sceneCategory release]; 
    sceneCategory = [scCategory retain]; 
} 
} 
-(NSString *) sceneCategory{ 
return sceneCategory; 
} 

-(void) setFileName:(NSString *)Flname{ 

if (fileName != Flname) { 
    [fileName release]; 
    fileName = [Flname retain]; 
} 
} 
-(NSString *) fileName{ 
return fileName; 
} 

-(void) setIsDefault:(int) isDeft{ 
isDefault = isDeft; 
} 
-(int)isDefault{ 
return isDefault; 
} 

-(void) setSortX:(int) srtX{ 
sortX =srtX; 
} 
-(int)sortX{ 
return sortX; 
} 

-(void) setPathId:(int) srtX{ 
pathId = srtX; 
} 
-(int)pathId{ 
return pathId; 
} 

-(void)dealloc{ 
[categoryId release]; 
[runModeType release]; 
[sceneCategory release]; 
[fileName release]; 
[isDefault release]; 
[sortX release]; 
[pathId release]; 
} 
@end 

,并设置使用我写的设置方法的值(例如:[classobj setCategoryId:1])。

现在超出范围解决.....