标签: automatic-ref-counting

为什么我不能在 ARC 中使用自定义颜色创建 CAGradientLayer?

在我的表格视图控制器的以下代码中,如果我使用“库存”颜色,[UIColor blueColor]它可以正常工作,但是如果我尝试使用 RGBA 值创建自定义颜色,它会失败并且除了纯黑色之外不绘制任何东西。

这是因为 ARC 在可以使用之前释放了 CGColorRef 吗?我怎样才能让它与自定义颜色一起工作?

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    [cell setBackgroundColor:[UIColor clearColor]];

    CAGradientLayer *selectedGrad = [CAGradientLayer layer];
    selectedGrad.frame = cell.bounds;

    UIColor* colorOne = [UIColor blueColor];//[UIColor colorWithRed:96/255 green:157/255 blue:227/255 alpha:1];
    UIColor* colorTwo = [UIColor greenColor];//[UIColor colorWithRed:54/255 green:123/255 blue:201/255 alpha:1];

    NSArray* colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, nil];

    selectedGrad.colors = colors;
    selectedGrad.locations = [NSArray arrayWithObjects:@(0.0), @(1.0), nil];

    [cell setSelectedBackgroundView:[[UIView alloc] init]];
    [cell.selectedBackgroundView.layer insertSublayer:selectedGrad atIndex:0];
}
Run Code Online (Sandbox Code Playgroud)

uitableview ios automatic-ref-counting cagradientlayer

1
推荐指数
1
解决办法
882
查看次数

ChartJS v2 - 将鼠标悬停在饼图/甜甜圈部分上时的外弧

我需要使用 ChartJS v2 创建一个饼图/圆环图,当用户将鼠标悬停在其上时,它会显示分段的外弧。类似这样的事情:

外弧

有谁知道我怎样才能实现这一目标?

非常感谢 :)

outer-join automatic-ref-counting chart.js

1
推荐指数
1
解决办法
4951
查看次数

ARC 不适用于 struct 和 enum,它们如何在 Swift 中释放

由于 ARC 不适用于 struct 和 enum,那么它们如何从内存中释放?当它在面试中被问到时,我不得不陷入困境并试图找到正确的答案,但在谷歌上找不到太多关于它的信息。我知道 swift 在处理值类型方面很聪明。但是如何?

memory-management structure value-type automatic-ref-counting swift

1
推荐指数
1
解决办法
801
查看次数

Rust 结构体字段作为 arc 与结构体作为 arc

我有一个关于 Rust 中的 Arc 的问题。我想做一些多线程的事情,并偶然发现了 Arcs,可以让多个线程访问相同的数据。目前,我使用字段为 Arcs 的结构,并且该结构只是正常的。我使用该结构作为某种配置,并将需要它的函数克隆到所需的字段。我的问题是,将结构变量设置为弧形并将字段设置为正常值比将其传递给函数并检索所需字段更好吗?我对内存使用和速度差异非常感兴趣;有没有,或者只是为了方便使用其中之一?

我想到的代码:

struct Config{
   name: String,
   id:   u32,
   ...
}

let myconf = Arc::new(Config::default());

do_stuff(myconf.clone()).await;
...
Run Code Online (Sandbox Code Playgroud)

当前代码:

struct Config{
   name: Arc<String>,
   id:   Arc<u32>,
   ...
}

let myconf = Config::default();
do_stuff(myconf.name.clone(), myconf.id.clone()).await;
...
Run Code Online (Sandbox Code Playgroud)

performance multithreading rust automatic-ref-counting

1
推荐指数
1
解决办法
302
查看次数

在Xcode 4.2中,retainCount发生了什么?

我注意到在将我的Xcode更新为4.2之后,retainCount总是等于-1.我不在我的项目中使用ARC,我甚至尝试在项目设置中创建新项目并将ARC选项切换为关闭,但下一行的工作非常奇怪:

NSString *string = [[NSString alloc] init];
NSLog(@"%i", [string retainCount]);   //-1
[string retain];
[string retain];
[string retain];
NSLog(@"%i", [string retainCount]);   //still -1
[string release];
[string release];
[string release];
NSLog(@"%i", [string retainCount]);   //still -1
Run Code Online (Sandbox Code Playgroud)

我想念一下吗?我认为如果关闭ARC选项,项目将像以前一样完全正常工作.

ios retaincount xcode4.2 automatic-ref-counting

0
推荐指数
1
解决办法
656
查看次数

ARC的强大特性 - 目标C.

我的问题很简单,但我没有在网上找到准确的答案.我是否必须在viewDidUnload方法中将nil设置为强属性?

我知道弱势属性会自动设置为零,但强势属性呢?我是否必须在viewDidUnload和didReceiveMemoryWarning中执行此操作?

非常感谢!泰迪熊

null properties objective-c ios automatic-ref-counting

0
推荐指数
1
解决办法
939
查看次数

使用ARC和UITableViewController抛出观察信息被泄露,甚至可能被错误地附加到其他对象

我似乎无法弄清楚如何解决我收到的这个错误.我点击一个单元格,将一个新的UITableViewController弹出到堆栈上.一旦我在导航UI上点击后退按钮,在此控制器中我在调试器中收到此错误但是应用程序似乎没有任何问题,因为它没有崩溃或挂起并且仍然可以正常工作.

UITableView类的实例0x79a8400已取消分配,而键值观察者仍在其中注册.观察信息被泄露,甚至可能被错误地附加到其他物体上.在NSKVODeallocateBreak上设置断点以在调试器中停止.这是当前的观察信息:(上下文:0x0,属性:0x738c010>)

代码如下,我在其他UITableViewControllers上使用类似的代码,但没有收到错误.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
    {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view.
    pull = [[PullToRefreshView alloc] initWithScrollView:(UIScrollView *) self.tableView];
    [pull setDelegate:self];
    [self.tableView addSubview:pull];
    [tableView.dataSource self];
    [tableView.delegate self];

    NSString *isAuthenticated = [[NSString alloc] init];
    isAuthenticated = [self retrieveUserToken:[[NSUserDefaults standardUserDefaults] valueForKey:@"email"]];
    NSNumber *categorySelected = [[NSNumber alloc] init];
    categorySelected = [[NSUserDefaults standardUserDefaults] valueForKey:@"category_id"];
    if (![isAuthenticated length])
    { …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c xcode4.2 automatic-ref-counting

0
推荐指数
1
解决办法
3341
查看次数

NSNotificationCenter如何检测ARC中的解除分配的观察者?

我发现NSNotificationCenter在ARC中使用时,即使你忘记删除了observerfrom defaultCenterobserverhas deallocated,然后你发布了观察者观察到的通知,也没有崩溃了!

在Xcode 4之前,没有ARC,我们必须observerdealloc功能中删除默认通知中心,如下所示:

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
Run Code Online (Sandbox Code Playgroud)

否则当发布绑定通知时,它会发生崩溃!

所以,问题是如何在NSNotificationCenter检测解除了分配observerARC

objective-c nsnotificationcenter automatic-ref-counting

0
推荐指数
1
解决办法
2131
查看次数

ARC和"复制"方法

我正在使用SBJson来解析JSON字符串.

像这样:

NSDictionary *dict = received_notification.object;
Run Code Online (Sandbox Code Playgroud)

我应该用吗?

NSString *name  = [[dict valueForKey:@"name"] copy];
Run Code Online (Sandbox Code Playgroud)

要么

NSString *name  = [dict valueForKey:@"name"];
Run Code Online (Sandbox Code Playgroud)

我认为第一种方法复制NSString,之后可以发布dict.

但是对于第二个表达式"name"保留了对dict的引用,它无法释放.

我错了吗?

memory-management objective-c automatic-ref-counting

0
推荐指数
1
解决办法
153
查看次数

识别圆弧上的事件

我是html5的新用户,并使用画布为我的应用程序之一绘制圆圈.我画了几个弧形成一个圆圈.它工作正常.但是我的问题是我想为每个弧关联一个单独的鼠标事件.

我g目结舌,发现KinteticJS可能很有用.我想知道是否有任何其他方法可用于为使用画布创建的每个弧附加鼠标事件.请注意我只使用了一个画布,没有鬼画布,我不想使用SVG.下面是我使用的代码行:

context.arc(x, y, radius, startAngle, endAngle, counterClockwise);
canvas.addEventListener("mousedown", doMouseDown(evt), false);
Run Code Online (Sandbox Code Playgroud)

对于nad

javascript html5 canvas mouseevent automatic-ref-counting

0
推荐指数
1
解决办法
2570
查看次数