最新测试:
我放置了一个NSLog(@"%p", self.myArray);
在数组分配之后,我看到一个实际记录的地址.....!?!?!

2012-03-06 01:33:52.618 ArrayTest[9883:f803] 0xae0f160


如果Xcode在局部变量或工具提示高亮方法中看不到该ivar的地址,似乎一切都破了。

有什么想法吗?

最新测试:
我创建了一个全新的项目。

似乎简单地将对象分配给ivars根本行不通。如果在分配新创建的数组后查看myArray的地址,则该地址为空。

nslog的输出

2012-03-06 01:30:37.283 ArrayTest[9848:f803] (
)
(lldb)

//
//  ViewController.h
//  ArrayTest
//
//  Created by Ben J Brown on 3/6/12.
//  Copyright (c) 2012StudioBflat. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
    NSMutableArray *myArray;

}

@property (strong) NSMutableArray *myArray;

@end


//
//  ViewController.m
//  ArrayTest
//
//  Created by Ben J Brown on 3/6/12.
//  Copyright (c) 2012 StudioBflat. All rights reserved.
//

#import "ViewController.h"

@implementation ViewController

@synthesize myArray;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    NSMutableArray *array = [NSMutableArray arrayWithCapacity:16];
    self.myArray = array;


NSLog(@“%@”,self.myArray);
    }

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
    } else {
        return YES;
    }
}

@end


较旧的数据:

在我的viewDidLoad中,我有:

NSLog(@"%@",self.collectionOfImageViews);
    self.collectionOfImageViews = [[NSMutableArray alloc] initWithCapacity:NUMBER_OF_COLUMNS*NUMBER_OF_ROWS];
     NSLog(@"%@",self.collectionOfImageViews);


但是稍后,当我访问该数组时,该数组具有一个地址,但是我添加到该数组中的所有对象都消失了,并且当我向该对象(NSMutableArray)发送计数消息时,它将在控制台中抛出该错误:

-[UIImage count]: unrecognized selector sent to instance 0x6b7ab40


我在界面中的属性:

@property(strong) NSMutableArray* collectionOfImageViews;


@implication之后我有@synthesize collectionOfImageViews; ...我在这里想念什么?

这是我收藏的地方:

  NSLog(@"%@",self.collectionOfImageViews);
    self.collectionOfImageViews = [[NSMutableArray alloc] initWithCapacity:NUMBER_OF_COLUMNS*NUMBER_OF_ROWS];
     NSLog(@"%@",self.collectionOfImageViews);


在执行此操作后,查看数组中的地址为空。

关于我之前得到的那个奇怪的错误,我认为这是一个UIImage不响应计数...我通过更改接口中的ivar声明的顺序来解决了这一问题:

#import <UIKit/UIKit.h>
#import "TiledImageView.h"


@interface ViewController : UIViewController <TiledImageViewDelegation>
{

    NSMutableArray *collectionOfImageViews;
    UIImage *sourceImage;
    UIImageView *currentTappedView;
}



@property(strong) NSMutableArray* collectionOfImageViews;
@property(strong) UIImage* sourceImage;
@property(strong) UIImageView* currentTappedView;

@end


至于我稍后在哪里填充可变数组的代码是:

iView = [[TiledImageView alloc] initWithImage:[UIImage imageWithCGImage:tempImage]];
                iView.userInteractionEnabled = YES;
                iView.delegate = self;
                iView.contentMode = UIViewContentModeScaleAspectFit;
                [iView setTag:index];
                [iView setPosX:column];
                [iView setPosY:row];

            [collectionOfImageViews addObject:iView];


我很糊涂,因为这是简单的ivar设置和获取..以及分配和初始化...我之前已经做过很多次了,但是看来我的ivars并没有存活...我是ARC的新手。

最佳答案

这似乎是LLDB错误。请改用GDB进行调试。

编辑:这显然是lldb中的一个错误,我已经在3月提交了一个错误报告(它被标记为另一个错误的重复,之后被标记为已关闭)-该问题已在较新的Xcode版本中解决。

08-19 11:55