- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 ARC 并以 iOS 5 为目标。我已经在我的 View Controller 的一个 header 中声明了一个 NSMutableArray ivar,在 viewDidLoad 中对其进行了初始化,并且我试图在我的一些 View Controller 的方法中对其进行操作。但是,它的行为非常奇怪。当我向它发送消息,如“addObject:”,或尝试将其设置为等于在方法的本地范围内创建的 NSMutableArray 时,它会将消息发送到我声明的其他 ivars。
例如,我不断收到的错误之一是 -[PullToRefreshView count]: unrecognized selector sent to instance。 PullToRefreshView 是我的另一个 ivar,但在我的代码中,我清楚地将计数消息发送到我的 NSMutableArray ivar。当尝试向 ivar NSMutableArray 添加一个对象时,它的计数(在调试器中)保持为 0。我一直在我的代码中搜索我可能忽略的东西,但它看起来像是某种 ARC 内存管理侥幸。有任何想法吗?这是我的代码的相关区域:
MyViewController.h
@interface MyViewController : UIViewController
{
PullToRefreshView *pull;
NSMutableArray *commentsSharesMerged;
}
@property (nonatomic, retain) PullToRefreshView *pull;
@property (nonatomic, retain) NSMutableArray *commentsSharesMerged;
- (void)refreshComments;
- (void)refreshShares;
@end
MyViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
commentsSharesMerged = [[NSMutableArray alloc] init];
pull = [[PullToRefreshView alloc] initWithScrollView:(UIScrollView *)self.suggestionTable];
[pull setDelegate:self];
[self.suggestionTable addSubview:pull];
}
- (void)refreshComments
{
NSURL *url = [NSURL URLWithString:@"http://example.com/comments.json"];
__unsafe_unretained __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setCompletionBlock:^{
NSString *responseString = [request responseString]; // Use when fetching text data
NSData *responseData = [responseString dataUsingEncoding:NSUTF8StringEncoding];
id jsonObject = [[CJSONDeserializer deserializer] deserialize:responseData error:nil];
NSLog(@"Connection JSON: %@", jsonObject);
NSMutableArray *commentsArray = [[NSMutableArray alloc] init];
for (int i = 0; i < [jsonObject count]; i++)
{
NSDictionary *currentCommentData = [jsonObject objectAtIndex:i];
Comment *comment = [[Comment alloc] init];
comment.identifier = [[currentCommentData objectForKey:@"id"] intValue];
comment.firstName = [currentCommentData objectForKey:@"first_name"];
comment.lastName = [currentCommentData objectForKey:@"last_name"];
comment.commentText = [currentCommentData objectForKey:@"comment"];
[commentsArray addObject:comment];
}
self.commentsSharesMerged = [commentsArray mutableCopy];
// I've also tried to add the object using something like this
//for (Comment *comment in commentsArray)
// [commentsSharesMerged addObject:comment];
}];
[request setFailedBlock:^{
NSError *error = [request error];
NSLog(@"%@", error);
}];
[request startAsynchronous];
}
最佳答案
我找到了解决问题的方法。它可以归因于 LLDB 调试中的某种内存错误。我将我的方案移至 GDB,这解决了我的 ivar 分配问题。
关于ios - 尝试添加对象时使用 ARC 的奇怪 NSMutableArray ivar 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9665701/
在我将一个对象分配给该对象可能已经分配给的 ivar 的情况下,首先检查它是否已经分配给该 ivar 有什么好处。 例如,代码 A 相对于代码 B 有什么好处吗? 一个 if (ivar != anO
我一直想知道为什么所有苹果代码示例都使用这样的代码: UINavigationController *aNavigationController = [[UINavigationController
aclass.h @interface aClass : NSObject { NSString *name; } @property (nonatomic, retain) IBOutlet
如果我有一个具有两个属性“a”和“b”的类,并且我有一个这些类实例的数组。创建仅包含“a”元素的数组的最佳方法是什么。 最佳答案 最简单的方法是Key-Value Coding : [yourArra
@property(nonatomic)ivar 和 @property(nonatomic,assign)ivar 相同还是不同? 最佳答案 如 docs 中所述: assign - Specifi
这是后续问题:Difference between self.ivar and ivar? : self.name = @"hello"; 我想知道神奇 setter 方法内部做了什么。所以问题是:任
即使我们不拥有(分配/新建/复制)那个 ivar,我们也必须在 dealloc 中释放 ivar 吗? 例如,这是正确的吗? -(void)dealloc { [_aUIImageIvar r
根据Objective-C runtime reference : ivar_getOffset Returns the offset of an instance variable. ptrdiff
我可以在类之外定义@some_ivar。这个 ivar 属于哪个类,它的范围是什么? 例如,我可以在 example.rb 中说 @var = "Hi" 在 irb 中,我可以要求 example.r
我写了以下 objective-c 类.. @interface thumb_user_info : NSObject { @public // Otherwise I was not able to
毫无疑问,关于 iOS 中的内存管理有大量的信息。在阅读了大量相关内容后,我仍然不清楚某些情况下的“最佳”实践。请我对下面两个示例进行澄清... 我有一个 NSMutableArray,它充当 tab
我必须调用一个重复出现的方法,或者换句话说,该方法将调用自身。 同时我必须有一个方法将使用的控制变量。 首先,我会想到声明一个类似 controlIndex 的 ivar,然后在方法中使用它,如下所示
我正在尝试调用函数,但出现错误: warning: passing argument 1 of 'drawPlot' from incompatible pointer type //call
我在接口(interface)上声明了这样一个ivar: BOOL controllerOK; 我必须在自身位于 block 中的 block 中使用此 ivar。有点像 myBlockl = ^()
我发现很多时候我想要一个合成的只读属性,我只是根据其他变量实现该属性的 getter 方法,而不需要 ivar,例如 (注意:我在界面中定义了 ivars,因为我使用的是 OmniGraffle UM
我正在对 UIToolbar 进行子类化,因为我要在我的整个应用程序中重复使用它。 UIToolbar 使用委托(delegate)协议(protocol): // // UIToolbarCusto
我的应用程序中有一个相当大的 View Controller ,我想通过将一些功能分成几类来清理它。我阅读了有关如何实现类别的内容,并且: #import "StatsVC.h" @interface
当我需要一个私有(private)对象时,我目前使用属性,如下所示: // Class extension in .m file @interface MyClass() @property (str
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How does an underscore in front of a variable in a coc
我遇到过 Objective-C 代码,它在 .m 文件的 @implementation 行下方声明一个变量,而不是在 .h 文件的 @interface block 中。然后它继续像私有(priv
我是一名优秀的程序员,十分优秀!