最新测试:
我放置了一个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版本中解决。