【问题标题】:cast of nsinteger (aka 'int') to nsdictionary is disallowed in arcarc 中不允许将 nsinteger(又名“int”)转换为 nsdictionary
【发布时间】:2013-08-06 07:30:05
【问题描述】:
-(IBAction)tapOnLikerImage:(UITapGestureRecognizer*)gestureRecognizer {
    AsyncImageView *likerImageView = (AsyncImageView*)[gestureRecognizer view ];
    NSDictionary * likerdetail = [(NSDictionary*)(likerImageView.tag) retain];
    NSLog(@"frndDetDict2 %@",[(NSDictionary*)(likerImageView.tag) retain]);
}

【问题讨论】:

    标签: objective-c int automatic-ref-counting nsdictionary


    【解决方案1】:

    你正在传递一个整数,你应该传递一个 Objective C 对象指针。您可能想从数组中获取字典。

    顺便说一句,您的保留释放调用执行不当。 NSDictionary * likerdetail = [(NSDictionary*)(likerImageView.tag) retain]; 的保留很好,NSLog(@"frndDetDict2 %@",[(NSDictionary*)(likerImageView.tag) retain]); 的保留不行。

    更好的方法(非 ARC):

    -(IBAction)tapOnLikerImage:(UITapGestureRecognizer*)gestureRecognizer {
        AsyncImageView *likerImageView = (AsyncImageView*)[gestureRecognizer view];
    
        NSDictionary *likerdetail = [[anArray objectAtIndex:(likerImageView.tag)] retain];
    
        NSLog(@"frndDetDict2 %@", likerdetail);
    
        [likerdetail release];
    }
    

    对于 ARC 代码:

    -(IBAction)tapOnLikerImage:(UITapGestureRecognizer*)gestureRecognizer {
        AsyncImageView *likerImageView = (AsyncImageView*)[gestureRecognizer view];
    
        NSDictionary *likerdetail = [anArray objectAtIndex:(likerImageView.tag)];
    
        NSLog(@"frndDetDict2 %@", likerdetail);
    }
    

    请注意 ARC 代码中没有任何保留和释放:ARC 会自动为您处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多